2016-03-24 18 views
1

Görsel stüdyo 2013 kullanıyorum ve basit bir kod kodu çalıştırmaya çalışıyorum.cpp modülünde assembler kodunu kullanmaya çalışırken linker hatası

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(); 
} 

ve asm dosya hello.asm: aşağıdaki hatayı alıyorum bundan sonra

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 

cevap

3

Hata mesajını okursanız, bulamadığı işlevin, _sayHello olarak adlandırılmış olduğunu görürsünüz. Önde gelen alt çizgiyi not edin.

bir lider çizgi ile montajcı işlevini adlandırmalısınız sorunu çözmek için:

global _sayHello 
_sayHello: 
    ... 
+0

Hala çalışma zamanında bir hata olsun. Program sadece – Artyom

+0

çöküyor '_printf' aramak için' call __printf' kullanmanız gerekir. Veya, orijinal koda geri dönün ve "nasm --prefix _" kullanın – Jester

+0

"__printf" un tanımsız olduğunu belirtir – Artyom

İlgili konular