1

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

测试.asm

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

源.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 程序集。谢谢

4

3 回答 3

2

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

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

有关详细信息,请参阅Microsoft Windows 中的 C 名称修饰

于 2012-10-11T20:54:13.057 回答
0

假设您在 Visual Studio 上,您需要将程序集文件的名称添加到其他依赖项

  1. 右键单击项目
  2. 转到属性
  3. 点击链接器
  4. 点击输入
  5. 在附加的依赖项中,添加测试

假设汇编代码工作正常,并且它与 c++ 源文件位于同一目录中,它应该可以工作

于 2012-10-11T21:13:29.800 回答
0

固定的。关注了这个

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

于 2012-10-12T04:22:22.687 回答