我试图通过向Visual C ++项目添加一个程序集文件来使我的第一个(vs中的程序集文件用法)程序
我的C ++代码
#include<iostream>
using namespace std;
extern "C" void TestRegisters();
int main()
{
cout << "Testing Registers" << endl;
TestRegisters();
cin.get();
return 0;
}
我的汇编代码
.data
mybyte db 0
.code
TestRegisters proc
mov rax,3342
mov rbx,2213
mov rcx,rax
mov mybyte,rax
ret
TestRegisters endp
end
我还做了以下配置
1.Using solution configuration I have made my platform x64.
2.I have also made my build coustomization setting to masm.
我收到两个错误。
1.error LNK1120: 1 unresolved externals
2.error LNK2019: unresolved external symbol TestRegisters referenced in function main
虽然有几个帖子已经可用,但遗憾的是这对我没有帮助。
答案 0 :(得分:1)
旧问题,但最近我遇到了同样的问题,答案可能对其他人有用。
需要三个基本步骤:
公开您的ASM功能。您可以通过在文件开头键入以下内容来完成此操作:
PUBLIC 测试寄存器
告诉解决方案如何在解决方案资源管理器中选择项目。在菜单栏上,依次选择“项目”,“生成自定义项”。在“ Visual C ++生成自定义文件”对话框中,选中masm(.targets,.props)旁边的复选框。选择确定以保存您的选择并关闭对话框。 (如此处1所述)
正确定义ASM文件的项目类型。在解决方案资源管理器中右键单击 .asm文件。然后在“常规”->“项目类型”中选择 Microsoft宏汇编程序,如下图所示。
我认为您的情况缺少最后一步。
答案 1 :(得分:0)
除了masm的自定义构建设置外,您还需要告诉链接器在构建exe文件时包含masm生成的目标文件。通常,您将目标文件的名称添加为附加输入文件。