CMake compiler error windows c ++ project module for SAFESEH image is unsafe (error LNK2026), can not open the file "LIBC.lib" (error LNK1104)

With plugin NSIS official interface built a C ++ project, I found that very strange error:

LINK : fatal error LNK2026: 模块对于 SAFESEH 映像是不安全的
LINK : fatal error LNK1104: 无法打开文件“LIBC.lib”

The solution is in the CMakeLists.txtmiddle of add_executableor add_libraryadd a link to sign before:

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文件时起作用

Further, the above method may not be manually vs the 项目属性->链接器->命令行added /SAFESEH:NO /NODEFAULTLIB:libc.lib, work equally well.

Reference article
[1] Linker tools error LNK2026 XXX module for SAFESEH image is unsafe

Guess you like

Origin www.cnblogs.com/macrored/p/12629161.html