2016-06-19 19 views
0

Linking C with Assembly in Visual Studio Ich habe das schon gesehen, aber das enthält keine hilfreichen Informationen.MASM64, Visual Studio 2015 C-Programm mit Assembly-Funktion in separater Datei

Ich habe ein C-Programm, in dem ich Funktion in Assembly geschrieben bin. Ich fun.h Header in C-Datei mit der Deklaration, und habe fun.asm mit der Implementierung. Es wurde zuerst mit NASM geschrieben, und es gibt ein global Schlüsselwort. Wie kann ich den gleichen richtigen Verknüpfungseffekt in MASM erzielen?

Minimal Beispiel:

main.c:

int main() 
{ 
    f(); 
    return 0; 
} 

fh:

void f(); 

f.asm:

.DATA 
_05 DQ 0.5 
_PI DQ 3.14159265358979323846264338327 

    .CODE 
public _f 
_f PROC 
_f ENDP 
    END 
+0

'PUBLIC' Schlüsselwort statt' GLOBAL' –

+0

Wenn ich public verwende, habe ich einen externen Symbolfehler – formateu

+0

Ah, wahrscheinlich weil die Windows _C_ Aufrufkonvention einen führenden Unterstrich erwartet. Also, wenn Sie eine Funktion namens 'myfun' haben, benennen Sie sie' _myfun' um und verwenden Sie 'PUBLIC _myfun' –

Antwort

0

Nach dem, was Michael Petch schrieb in Kommentar : Gesuchtes Schlüsselwort ist PUBLIC, und in x86_64 ist KEINE Unterstreichung für PROC-Funktionen erforderlich.