2013-05-16 35 views
0

IM試圖在MASM32(使用radasm)在其他項目中使用一個lib ...使用的lib ++

的庫源代碼:

.386 
.MODEL flat,stdcall 
option casemap:none 
.code 
start: 
PUBLIC HookProc 
HookProc proc addy:DWORD 

,並在使用MSVC:

extern "C" void* HookProc(void* ptr); 
#pragma comment(lib, "TestHook.lib") 

然而這產生一個錯誤:

Win32Project1.obj:錯誤LNK2019:在函數引用解析外部符號_HookProc _wmain

,但我看到的lib有

!<arch> 
/    1368690603    0  20  ` 
®[email protected]/    1368690603    0  26  ` 

爲什麼不能MSVC看到這個PROC在lib? ; /這是否與@4有關?

編輯:改到.MODEL flat, c是擺脫了@ 4,但仍_HookProc uresolved ......

+0

您能不能告訴骯髒的文件?不一定需要整個功能,只要聲明就足夠了。我提供了一個我測試和工作的小樣本。 – Devolus

回答

1

CPP:

extern "C" int GetValue(void); 

int main(int argc, char*arg[]) 
{ 
    char *p = "test"; 
    int v = GetValue(); 

    return 0; 
} 

ASM:

.486 
.model flat, C 
option casemap :none 

.code 

GetValue PROC 
    mov eax, 1234 
    ret 
GetValue ENDP 

END 
+0

實際上它與'.model flat,c'一起工作,所以我的失敗是調用約定。 – n00b

+1

對我來說這是一個很好的練習,讓我回到這個裝配的東西。我不得不穀歌的例子,因爲我遇到了同樣的問題。 :) – Devolus