我正在使用visual studio 2013并尝试运行简单的nasm代码。
main.cpp中:
#include "Header.h"
void _printf() {
printf("HELLO\n");
}
int main()
{
sayHello();
return 0;
}
Header.h:
#include <stdio.h>
void _printf();
extern "C" {
void sayHello();
}
和asm文件hello.asm:
SECTION .text
EXTERN _printf
global sayHello
sayHello:
push ebx
call _printf
pop ebx
ret
之后我收到以下错误:
Error 1 error LNK2019: unresolved external symbol _sayHello referenced in function _main c:\Users\art.mhtr\documents\visual studio 2013\Projects\ConsoleApplication8\ConsoleApplication8\main.obj ConsoleApplication8
答案 0 :(得分:3)
如果您阅读错误消息,您将看到它找不到的功能名为_sayHello
。请注意前导下划线。
要解决您的问题,您必须使用前导下划线命名汇编程序函数:
global _sayHello
_sayHello:
...