我为zlib 1.2.7创建了一个新的解决方案,将其设置为静态库,并从./zlib/contrib/minizip
添加了必要的 header 和源文件,并使其能够正常编译。然后,我将其链接到libpng(也作为静态lib),该文件也可以正常编译。然后,我将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')时出现相同的错误,如果我完全省略它,那么我的主项目就会拒绝构建。
这里发生了什么?我该如何解决?
最佳答案
好吧,你拼错了。也许在您的问题中,或者在链接器设置中,这种巧合倾向于解释为什么某些东西不起作用的原因。
无需键入即可使用它,请您这样做。在“项目+属性”,“链接器”,“高级”中,向下滚动右面板的“图像具有安全异常处理程序”设置。使用组合框选择否。