2010-04-07 3 views
0

J'ai le fichier .def, fichier .lib, le fichier .dll, les fichiers source.Importer un DllMain winapi .dll dans le projet Visual Studio C++

Il utilise WINAPI DllMain, toutes ses fonctions suivent cela.

Il est comme ça:

BOOL APIENTRY DllMain(HANDLE hModule, 
         DWORD ul_reason_for_call, 
         LPVOID lpReserved 
     ) 
{ 
    return TRUE; 
} 


extern "C" 
{ 
int WINAPI DoSomething() { return -1; } 
int WINAPI DOSOMETHIGNELSE!() { return 202020; } 
}; 

dans les paramètres du projet Linker j'ai ajouté le fichier .lib. Il n'y a pas de fichier d'en-tête pour les fonctions réelles dans la partie externe "C".

J'inclus windows.h essayez d'appeler DoSomething() mais je ne sais pas ce que c'est.

+0

-moi si je me trompe, mais je ne crois pas que les fonctions sont autorisés à avoir s au nom!. –

Répondre

1

Je ne sais pas exactement ce que vous demandez, mais je pense au moins que vous aurez besoin de créer un fichier .h pour le code client à inclure afin qu'il puisse appeler des fonctions dans la DLL - sinon comment le compilateur sait ce que le nom DoSomething est?

Le fichier d'en-tête devrait probablement regarder quelque chose comme:

#ifndef DOSOMETHING_H 
#define DOSOMETHING_H 

#ifdef __cplusplus 
extern "C" 
{ 
#endif 

int WINAPI DoSomething(void); 


// I commented out the 2nd function because I don't think the `!` character 
// could ever be valid there 

//int WINAPI DOSOMETHIGNELSE!(); 


#ifdef __cplusplus 
} 
#endif 

#endif /* DOSOMETHING_H */ 
+0

Que dans le .H? J'ai essayé un fichier avec: __declspec (dllimport) int DoSomething(); –

Questions connexes