我为 zlib 1.2.7 创建了一个新的解决方案,将其设置为静态库,从中添加了必要的头文件和源文件./zlib/contrib/minizip
并让它编译得很好。然后我将它与 libpng (也作为静态库)链接起来,它也可以很好地编译。然后,我将 libpng 链接到我的图形引擎项目(也是一个静态库)......仍然没有错误。
但是一旦我将我的主项目链接到我的图形引擎,我就会收到几个关于crc32.obj、deflate.obj、inflate.obj、d3dxplane.obj、d3dxvec4.obj和其他 zlib/directx 相关模块的 LNK2026 错误。它告诉我它们来自我的图形引擎库,所以我决定通过添加/SAFESEH:NO
到相应项目的链接器标志来解决这个问题。
注意:我可能应该声明所有项目都设置为目标 x86,而不是 x64。
然而,问题是我现在得到了:
warning LNK4044: unrecognized option '/SAFESEH'; ignored
这会导致我的主项目中出现相同的 LINK2026 错误。
如果我打开一个 Visual Studio 命令提示符并键入LINK /?
它确认这/SAFESEH
是一个有效的链接器选项。当我使用/SAFESEH
(没有 ':NO')时,我得到了同样的错误,如果我完全省略它,那么我的主项目只是拒绝构建。
这里发生了什么?我该如何解决这个问题?