首页 > 编程语言 > 详细

CMake编译windows c++工程报错模块对于 SAFESEH 映像是不安全的(error LNK2026)、无法打开文件“LIBC.lib”(error LNK1104)

时间:2020-04-03 22:07:42      阅读:189      评论:0      收藏:0      [点我收藏+]

用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 映像是不安全的

CMake编译windows c++工程报错模块对于 SAFESEH 映像是不安全的(error LNK2026)、无法打开文件“LIBC.lib”(error LNK1104)

原文:https://www.cnblogs.com/macrored/p/12629161.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!