Assembly CMake:当项目包含VS2013的.asm MASM源时,如何避免链接错误?
我正在使用带有“Visual Studio 12 2013”生成器的CMake 3.0.1 我将.asm文件添加到项目中。然后,链接器错误LNK2026在Assembly CMake:当项目包含VS2013的.asm MASM源时,如何避免链接错误?,assembly,cmake,Assembly,Cmake,我正在使用带有“Visual Studio 12 2013”生成器的CMake 3.0.1 我将.asm文件添加到项目中。然后,链接器错误LNK2026在cmake--build.时发生 LNK2026错误对于SAFESEH映像是不安全的。 如果我按如下所示手动添加项目属性,它可以正常工作 真的 在不更改生成的项目文件的情况下,是否可以避免链接器错误 下面是一个无法使用生成的.vcxproj生成的简单项目 a、 c m、 asm CMakeLists.txt 将/safeseh标志添加到源:
cmake--build.
时发生
LNK2026错误对于SAFESEH映像是不安全的。
如果我按如下所示手动添加项目属性,它可以正常工作
真的
在不更改生成的项目文件的情况下,是否可以避免链接器错误
下面是一个无法使用生成的.vcxproj生成的简单项目
a、 c
m、 asm
CMakeLists.txt
将
/safeseh
标志添加到源:
set_source_files_properties(
my.asm
PROPERTIES
COMPILE_FLAGS "/safeseh"
)
您应该包含完整的错误消息。没有多少人能记住所有的LNK错误信息。msdn站点链接已经添加,因为我无法获得英语的实际错误信息。谢谢。@YasuoOhno我没有使用vs的经验,但我想问一下asm中的函数实现是否需要名称损坏?。model指令告诉我如何组装C命名和约定。因此,符号ExAsmCode将自动转换为_ExAsmCode。
.586
.model flat, c
MessageBoxA proto STDCALL :dword, :dword, :dword, :dword
.data
MSG DB 'masm', 0
.code
ExAsmCode PROC
invoke MessageBoxA, 0, offset MSG, offset MSG, 0
ret
ExAsmCode ENDP
end
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(Ex)
ENABLE_LANGUAGE(ASM_MASM)
add_executable(Ex a.c m.asm)
set_source_files_properties(
my.asm
PROPERTIES
COMPILE_FLAGS "/safeseh"
)