CMake編譯windows c++工程報錯模塊對於 SAFESEH 映像是不安全的(error LNK2026)、無法打開文件“LIBC.lib”(error LNK1104)


用NSIS官方提供的plugin接口搭了一個C++工程,發現報錯很奇怪:

LINK : fatal error LNK2026: 模塊對於 SAFESEH 映像是不安全的
LINK : fatal error LNK1104: 無法打開文件“LIBC.lib”

解決的辦法是,在CMakeLists.txt中的add_executable或者add_library之前添加鏈接標志:

set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO /NODEFAULTLIB:libc.lib")		# 程序輸出文件為exe文件時起作用
set(CMAKE_SHARED_LINKR_FLAGS "${CMAKE_SHARED_LINKR_FLAGS} /SAFESEH:NO /NODEFAULTLIB:libc.lib")		# 程序輸出文件為dll文件時起作用
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKR_FLAGS} /SAFESEH:NO /NODEFAULTLIB:libc.lib")	        # 程序輸出文件為lib文件時起作用
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO /NODEFAULTLIB:libc.lib")	# 程序輸出文件為module文件時起作用

此外,不用上述方法也可以手動在vs的項目屬性->鏈接器->命令行中加入/SAFESEH:NO /NODEFAULTLIB:libc.lib,同樣起作用。

參考文章
[1] 鏈接器工具錯誤 LNK2026 XXX模塊對於 SAFESEH 映像是不安全的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM