C++ 在单独文件中编译程序集时获取编译错误
这是我的(非常简单)程序。当函数C++ 在单独文件中编译程序集时获取编译错误,c++,assembly,C++,Assembly,这是我的(非常简单)程序。当函数函数位于我自己的.cpp文件中时,它可以完美地工作,但当我将它链接到另一个.asm文件时,我会出错。我在Visual C++ 2010 Express中编译,我相信这是我使用的32位汇编程序。 #include <iostream> extern "C" int function(); int main() { std::cout << function(); std::cin.get(); } 我得到了一些错误:
函数
位于我自己的.cpp文件中时,它可以完美地工作,但当我将它链接到另一个.asm
文件时,我会出错。我在Visual C++ 2010 Express中编译,我相信这是我使用的32位汇编程序。
#include <iostream>
extern "C" int function();
int main() {
std::cout << function();
std::cin.get();
}
我得到了一些错误:
error A2013: .MODEL must precede this directive
error A2034: must be in segment block : function
error A2034: must be in segment block
error A2034: must be in segment block
fatal error A1010: unmatched block nesting : function
这是我第一次使用汇编,所以我不熟悉这些错误。它们是什么意思?如何让这个程序工作?您应该有一个.model和一个cpu声明,通常还有一个堆栈声明。 请看这里:
我按照第一个视频所说的做了。我现在得到错误:
未解析的外部符号\u函数在函数\u main中引用
。另外:致命错误LNK1120:1未解决的外部问题
@David:可能是个愚蠢的建议,但是您是否尝试过在asm中命名函数\u function
?链接器似乎正在查找\u function
而不是function
,可能是一个命名convention@AndyProwl不,.@David:我不是这个意思:我的意思是在asm中,而不是在.cpp中加一个尾随下划线。似乎采用了这种命名约定来使用尾随下划线,您的屏幕截图似乎证实了这一点(请参见现在未解析的符号是用于\uu函数的,带有两个下划线)?@David:换句话说,保持.cpp
文件与原始问题中的一样,并将.asm
文件更改为具有\u function proc
而不是function proc
和\u function endp
而不是function endp
error A2013: .MODEL must precede this directive
error A2034: must be in segment block : function
error A2034: must be in segment block
error A2034: must be in segment block
fatal error A1010: unmatched block nesting : function