1

x86用のライブラリ(poco-1.3.6p2-all、価値がある)を構築したい。新しい (クリーンな) Windows 7 64 ビット マシンをセットアップし、Visual Studio 2008 Standard をインストールしました。このボックスにこれまでにインストールされたもので、インストール エラーが発生したものはありません。

同じライブラリが、VS 2008 Standard がインストールされた Windows XP 32 ビット システムで問題なく構築されています。ええ、すべてアンマネージ C++ です。

私が得ているエラーは、プロジェクト内の個々の DLL のすべてのリンクにあります。例:

1>.\obj\debug_shared\CppUnitException1.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

問題のライブラリは、.c​​md ファイル ビルド スクリプトから呼び出される .vcproj ファイルからビルドされます。

コンパイラ オプション (コマンド ライン) は次のようになります。

/Od /I "include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "CppUnit_EXPORTS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Fo".\obj\debug_shared/" /Fd".\obj\debug_shared/vc80.pdb" /W3 /nologo /c /ZI /errorReport:prompt

プロジェクト オプションのリンカー コマンド ラインは次のようになります。

/OUT:"..\bin\CppUnitd.dll" /INCREMENTAL /NOLOGO /DLL /MANIFEST /MANIFESTFILE:".\obj\debug_shared\CppUnitd.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"..\bin\CppUnitd.pdb" /DYNAMICBASE /NXCOMPAT /IMPLIB:"..\lib\CppUnitd.lib" /MACHINE:X86 /ERRORREPORT:PROMPT

(私には) リンカーが x86 オブジェクト ファイルを認識しているように見えますが、コマンド ライン オプションが正しいにもかかわらず、x64 モードで呼び出されています。

ターゲットを x64 ではなく 32 ビット/x86 タイプにする必要があります。

これを修正する Visual Studio オプションはありますか?

4

4 に答える 4

1

私はこの質問を寝かしつけるべきだと思います。私はシステム構成(パス変数など)でいくつかのことをいじり、その後のビルドは正しく行われました、IE、私はDLLに適切にリンクされた32ビットのOBJファイルで終わりました。

ビルドに影響を与えた変更点はわかりません。

したがって、「クリーン」からの完全なビルドは現在機能しますが、それを機能させるために何を変更したのか正確にはわかりません。システム(ハードウェアを含む)を最初から再構築し、すべてを再インストールした後、私は困惑しました。したがって、おそらく私は明白で愚かなこと(ビルド前の「vsvars32」呼び出しなど)を省略していて、makeファイルは望ましくないデフォルトで私を収容していました。

于 2010-01-19T20:01:25.107 に答える
1

VS でプロジェクトを右クリックし、プロパティに移動します。[ビルド] タブを見つけて、[プラットフォーム ターゲット] が [x86] に設定されていることを確認します。

于 2010-01-15T21:31:55.343 に答える
1

うーん、もっと早く答えたかったのですが、答える機会がありませんでした。したがって、問題は Visual Studio のインストールにありました。どういうわけか、インストールで x86 用のコンパイラといくつかの関連する dll がインストールされませんでした。再インストールしたら動作しました。また、使用する正しいコンパイラは x86 であり、クロス コンパイラではありません。

于 2010-02-04T18:48:07.240 に答える
0

解決策はありますが、それでは問題を解決できない可能性があります。

さて、同じ問題を解決する私の方法は

(in Visual Studio) Project -> Properties  ->  C/C++  ->  Optimization  ->  Inline Function Expansion =  Default

私はそれをしました、そして私の問題は解決しました。

于 2014-11-06T11:32:54.880 に答える