我为zlib 1.2.7创建了一个新的解决方案,将其设置为静态库,并从“./zlib/contrib/minizip”中添加了必要的头文件和源文件,成功编译。然后,我将其与libpng(也作为静态库)链接,也编译成功。接着,我将libpng链接到我的图形引擎项目(也是静态库)...仍然没有错误。
但是,一旦我将主项目链接到我的图形引擎,就会出现几个LNK2026错误,涉及crc32.obj、deflate.obj、inflate.obj、d3dxplane.obj、d3dxvec4.obj和其他与zlib/directx相关的模块。它告诉我它们来自于我的图形引擎库,因此我决定通过为相应的项目添加/SAFESEH:NO来解决这个问题。
注意:我应该明确说明所有项目都设置为目标x86,而不是x64。
然而,问题在于现在我得到了以下警告:
如果我打开Visual Studio命令提示符并键入LINK /?,它会确认/SAFESEH是一个有效的链接器选项。当我使用/SAFESEH(不带':NO')时,我得到同样的错误,如果我完全省略它,那么我的主项目就会拒绝构建。
这是怎么回事?我该如何解决?
但是,一旦我将主项目链接到我的图形引擎,就会出现几个LNK2026错误,涉及crc32.obj、deflate.obj、inflate.obj、d3dxplane.obj、d3dxvec4.obj和其他与zlib/directx相关的模块。它告诉我它们来自于我的图形引擎库,因此我决定通过为相应的项目添加/SAFESEH:NO来解决这个问题。
注意:我应该明确说明所有项目都设置为目标x86,而不是x64。
然而,问题在于现在我得到了以下警告:
warning LNK4044: unrecognized option '/SAFESEH'; ignored
这导致我的主项目出现了相同的LINK2026错误。如果我打开Visual Studio命令提示符并键入LINK /?,它会确认/SAFESEH是一个有效的链接器选项。当我使用/SAFESEH(不带':NO')时,我得到同样的错误,如果我完全省略它,那么我的主项目就会拒绝构建。
这是怎么回事?我该如何解决?
/SAFESEH
。 唯一有这个设置的项目是我的主项目(其他项目中是“Librarian”而不是“Linker”,并且在“Librarian->“所有选项”下不存在该选项)。 我在我的主项目中将其更改为“NO”,并且编译和运行时没有任何错误...但我宁愿在更深层次上支持它以支持我的静态库,这样第三方开发人员就不会被迫在自己的项目中禁用它。这可能吗? - RectangleEquals/safesh
而不是/safeseh
。 - Björn Lindqvist