1

以前、プロジェクトで quickfix_net.dll と quickfix_net_messages.dll を使用していました。プロジェクトはリリース モードでビルドされ、プロジェクト プロパティ -> プラットフォーム ターゲットは x86 でした。上記のプロジェクトを参照していた Windows サービスを開始しようとすると、「不正な形式のプログラムを読み込もうとしました」というメッセージが表示されました。

私はstackoverflowで検索しましたが、ほとんどの提案はQuickFix/nをそのままネイティブ.NETで使用することであり、64ビットOSなどと格闘しなければならないc ++の複雑さはありません

QuickFix/n に移行した後、Release mode build with and project propertys -> Platform Target to AnyCPU が 64 ビット 2008 サーバーで動作すると想定しましたが、同じエラー「プログラムを正しくない形式で読み込もうとしました」というエラーが発生しました。

プロジェクト プロパティ -> プラットフォーム ターゲットを x86 のみに変更したとき、Windows 2008 64 ビット サーバーで QuickFix/n を使用できました。

すべてのプロジェクト (つまり dll) は Platform Target to AnyCPU に設定されていますが、QuickFix/n を使用するこの特定の dll のみを x86 に設定する必要があります。

ネイティブの .net QuickFix が x64 で動作しない理由 (私のサーバーは 64 ビットであるため) と、Target が x86 に設定されているときに動作する理由を誰でも説明できますか?

4

1 に答える 1