我已在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 ==========
抱歉,这是关于激情,但很明显它无法找到你好的功能
答案 0 :(得分:1)
将hello
更改为_hello
plz。对于hello.asm
,它应该是:
.686
.MODEL FLAT
.STACK
.DATA
.CODE
_hello PROC
xor eax,eax
ret
_hello ENDP
END