我已经为此纠结了一天左右,但还没有找到解决方案。我尝试使用Visual Studio 2019从Testing.asm文件访问main.cpp中声明的全局变量,而这两个文件位于同一个项目中。但我遇到了以下链接错误:
Error LNK2019 unresolved external symbol referenced in function TestRoutine
// main.cpp
extern "C" int __declspec(dllexport) A; //global variable
.....
########################### Testing.asm #####################
EXTERN A:QWORD
.data
.code
main PROC
main ENDP
TestRoutine PROC PUBLIC
MOV EAX, DWORD PTR A
RET
TestRoutine ENDP
END
1条答案
按热度按时间fcipmucu1#
我在程序中遇到了类似的错误。使用
extern "C" {int A;}
解决它。顺便说一句,您将A
声明为int,它是一个双精度字(32位)。后来你声明了EXTERN A:QWORD
,它是64位的。最后,您使用了MOV EAX, DWORD PTR A
。更直接的方法是将A
声明为DWORD
并删除DWORD PTR
类型转换。