[英]error LNK2019: unresolved external symbol “…” referenced in function _main
[英]error LNK2019: unresolved external symbol referenced in function main
我试图用C ++运行我的简单汇编代码。我只有两个文件“.cpp”文件和“.asm”文件。 在编译时会出现错误(见下文)。如果有人可以提供帮助,我将不胜感激...... :)
这是我的“main.cpp”文件
#include <iostream>
using namespace std;
extern "C" int GetValueFromASM();
int main(int argc, char *argv[]){
cout<<"value is:"<<GetValueFromASM()<<endl;
cin.get();
return 0;
}
我还有一个简单的“asm.asm”文件
.code
GetValueFromASM proc
mov rax,3254
ret
GetValueFromASM endp
end
当尝试构建我得到此错误:
1>main.obj : error LNK2019: unresolved external symbol GetValueFromASM referenced in
function main
1>..\visual studio 2012\Projects\AllAssembly\x64\Debug\AllAssembly.exe : fatal error LNK1120: 1 unresolved externals
我试过去物业 - >链接 - >附加图书馆目录并改变路径,但它不起作用。
我也试过去LINKER-> SYSTEM-> SUBSYSTEM并选择“Windows(/ SUBSYSTEM:WINDOWS)”或“Console(/ SUBSYSTEM:CONSOLE)”但两个都没有工作。 任何人都可以帮助!! ..非常感谢
extern“C”表示前导下划线(c风格函数命名)。 只需将您的函数添加到.asm文件中,它就会开始链接。
UPD:如果您的项目没有构建,请确保您包含MASM构建自定义:转到项目上下文菜单 - >构建自定义... - >选中masm的复选框(.targets,.props)。
然后转到.asm文件的属性,并选择项类型为“Microsoft宏汇编程序”。
我把它与32位混淆了。 :(
所以这适用于64位。
section .code
global GetValueFromASM
GetValueFromASM:
...
我没有对代码进行任何更改。我只是更改了一些配置,如“Arty”所示。
方法如下:右键单击您的项目 - >转到构建自定义 - >检查MASM - >单击确定然后转到.asm文件的属性,并选择项类型为“Microsoft宏汇编程序”。
你做完了!!感谢Arty&Devolus的帮助。
对于类似的问题可以有所帮助: http : //scriptbucket.wordpress.com/2011/10/19/setting-up-visual-studio-10-for-masm32-programming/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.