在Visual Studio 2012中将汇编函数.asm链接到c ++项目

时间:2014-10-17 11:21:26

标签: visual-studio function assembly linker masm

我已在Visual Studio的Windows c ++项目中创建,以了解如何编写asm函数。 所以在我的项目中,我用这个简单的代码得到了hello.asm:

.686
.MODEL FLAT
.STACK
.DATA 
.CODE

hello PROC
xor eax,eax
ret 
hello ENDP

END

和asm_test.cpp与main函数如下:

#include "stdafx.h"
#include <Windows.h>
extern "C" void hello();

int _tmain(int argc, _TCHAR* argv[])
{
    hello();
    return 0;
}

所以一般来说ml.exe没有任何问题将asm文件编译为hello.obj 但是hello()函数没有&#39;知道应该从哪里拿走。以下是编译器告诉我的内容。

1>------ Построение начато: проект: asm_test, Конфигурация: Debug Win32 ------
1>  Assembling hello.asm...
1>asm_test.obj : error LNK2019: ссылка на неразрешенный внешний символ _hello в функции _wmain
1>G:\renderer\asm_test\Debug\asm_test.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

抱歉,这是关于激情,但很明显它无法找到你好的功能

1 个答案:

答案 0 :(得分:1)

hello更改为_hello plz。对于hello.asm,它应该是:

.686
.MODEL FLAT
.STACK
.DATA 
.CODE

_hello PROC
xor eax,eax
ret 
_hello ENDP

END