1
私はVisual Studio 2013を使用していて、簡単なnasmコードを実行しようとしています。cppモジュールでアセンブラコードを使用しようとしたときにリンカエラーが発生しました
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
が、私はまだ実行時にエラーが発生します。プログラムがクラッシュするだけです – Artyom
'_printf'を呼び出すには' call __printf'を使う必要があります。または、元のコードに戻して 'nasm --prefix _'を使用してください – Jester
'__printf'が未定義です – Artyom