我试图在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宏汇编程序”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句