8

zlib 1.2.7 用の新しいソリューションを作成し、それを静的ライブラリとして設定し、必要なヘッダーとソース ファイルを追加して、./zlib/contrib/minizip問題なくコンパイルできるようにしました。次に、libpng (静的ライブラリとしても) に対してリンクしましたが、これも正常にコンパイルされます。次に、libpng をグラフィック エンジン プロジェクト (これも静的ライブラリ) にリンクしましたが、まだエラーは発生していません。

しかし、メイン プロジェクトをグラフィック エンジンにリンクするとすぐに、 crc32.obj 、 deflate.obj 、 inflate.obj 、 d3dxplane.obj 、 d3dxvec4.obj およびその他の zlib/directx 関連モジュールに関するいくつLNK2026エラー発生ます。私のグラフィック エンジン ライブラリからのものであることがわかり/SAFESEH:NOます。そのため、対応するプロジェクトのリンカー フラグを追加して、これを修正することにしました。
注: おそらく、すべてのプロジェクトが x64 ではなく x86 をターゲットに設定されていることを述べる必要があります。

ただし、問題は次のようになりました。
warning LNK4044: unrecognized option '/SAFESEH'; ignoredこれにより、メイン プロジェクトで同じ LINK2026 エラーが発生します。
Visual Studio のコマンド プロンプトを開いて入力すると、有効なリンカー オプションであるLINK /?ことを確認できます。(with the ':NO')/SAFESEHを使用すると同じエラーが発生し、それを完全に省略すると、メイン プロジェクトは単にビルドを拒否します。/SAFESEH

何が起きてる?どうすればこれを回避できますか?

4

3 に答える 3

16

/SAFESH:NO をリンカー フラグに追加することによって

うーん、スペルを間違えたね。多分あなたの質問で、おそらくリンカの設定で、うまくいくはずの何かがうまくいかない理由を説明する傾向がある一種の偶然です。

入力しなくても利用できます。そのようにすることをお勧めします。Project + Properties、Linker、Advanced、右側のパネルを下にスクロールし、「Image has Safe Exception Handlers」設定。コンボボックスを使用して [いいえ] を選択します。

于 2013-04-13T02:07:56.270 に答える