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