MSVC11错误中的x64位asm

时间:2012-10-11 20:48:47

标签: c++ visual-c++ assembly 64-bit

所以我的解决方案中有两个文件。

TEST.ASM

.code
test proc
mov eax, 1
ret
test endp
end

Source.cpp

#include <iostream>
#include <conio.h>

extern "C" int test();

int main()
{
std::cout << "eax = " << test() << std::endl;
_getch();
return 0;
}

我在配置管理器中将解决方案平台设置为x64,并在Build Customization中检查masm。我发现了两个相关的帖子,但建议没有帮助。我正在关注youtube上的一个视频并完全像作者那样做,但我得到了这些错误:

1>Source.obj : error LNK2019: unresolved external symbol _test referenced in function main
1>C:\Users\omar\Desktop\ASM\x64\Debug\ASM.exe : fatal error LNK1120: 1 unresolved externals

有人可以帮我弄清问题是什么吗?我真的想进入x64程序集。感谢

3 个答案:

答案 0 :(得分:2)

您的汇编程序的函数名称必须是_test,而不仅仅是test。您可以在链接器的错误消息中看到:

error LNK2019: unresolved external symbol _test
                                          /\
                                          ||
right here ---------------------------------

有关详细信息,请参阅C name decoration in Microsoft Windows

答案 1 :(得分:0)

假设您使用的是Visual Studio,则需要将程序集文件的名称添加到其他依赖项中

  1. 右键单击项目
  2. 转到属性
  3. 点击链接器
  4. 点击输入
  5. 在附加的Dependancies中,添加测试
  6. 假设汇编代码工作正常,并且它与c ++源文件位于同一目录中,它应该可以工作

答案 2 :(得分:0)

固定。关注this

另外,我不得不使用下划线