2012-07-28 12 views
0

好的,我正在與NASM彙編代碼並與Golink鏈接。我一直直接通過DLL使用Windows API調用和C調用。例如,kernel32.dll用於諸如ExitProcess和msvcrt.dll之類的東西,就像printf。然而,當我嘗試使用這樣的裝飾品時,golink抱怨裝飾並建議使用/mix旗幟。當我使用它時,Windows會抱怨輸出文件不是有效的win32程序。當我不使用裝飾品時,它工作正常。任何人都可以解釋怎麼了?Golink是否需要符號名稱上的裝飾?

例子:

extern printf 
extern ExitProcess 
;A bunch of code which isn't really important to this 

然後我的命令:

nasm -fwin32 test.asm 
golink test.obj kernel32.dll msvcrt.dll /console /entry _start 

回答

1

我使用NASM,但不是在Windows,所以我真的不熟悉GoLink。我認爲它在內部增加了「裝飾」。它可能需要領先的下劃線。如果在命令行使用「--prefix _」,那麼Nasm會將此添加到任何extern/global。

仔細閱讀錯誤信息可能會給您一些GoLink期望的提示。嘗試它,直到試用>錯誤。 :)

最好, 弗蘭克

相關問題