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
何が起きてる?どうすればこれを回避できますか?