2013-05-16 7 views
0

im essayant de faire une lib dans masm32 (en utilisant radasm) pour une utilisation dans d'autres projets ...utilisant lib compilé dans masm en C++

le code source libs:

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

et pour une utilisation dans msvc:

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

mais cela produit une erreur:

Win32Project1.obj: erreur LNK2019: symbole externe non résolu _HookProc référencé dans la fonction _wmain

mais je vois dans le répertoire lib il y a

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

Pourquoi ne puis-msvc voir ce proc dans le répertoire lib ?? ;/cela a-t-il quelque chose à voir avec le @4?

Edit: changé à .MODEL flat, c qui se sont débarrassés de @ 4, mais toujours _HookProc uresolved ......

+0

Pouvez-vous montrer le fichier assmbly? Pas nécessairement toute la fonction, juste les déclarations suffiraient. J'ai fourni un petit échantillon que j'ai testé et travaille. – Devolus

Répondre

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

en fait ça marche avec '.model flat, c' donc mon échec appelait des conventions. – n00b

+1

Eh bien, c'était un bon exercice pour moi de revenir dans ce genre de choses. J'ai dû google pour des exemples parce que j'ai rencontré le même problème. :) – Devolus