Comment puis-je définir un point d'entrée pour une dll
J'ai d'abord pensé dll point d'entrée dans la fonction DLLMain mais lorsque j'essaie d'importer en C#, j'obtiens une erreur que point d'entrée n'a pas été trouvé, Voici mon code:
#include <Windows.h>
int Test(int x,int y)
{
return x+y;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
MessageBox(0,L"Test",L"From unmanaged dll",0);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Comment puis-je définir un point d'entrée pour ma dll? Et si vous n'avez pas l'esprit peut tu me donner un peu d'explications sur point d'entrée?
Comme dois-je le mettre à l'importation de la même dll, et de changer le point d'entrée afin que je puisse utiliser d'autres fonctions dans la même dll? merci à l'avance.
OriginalL'auteur method | 2011-10-04
Vous devez vous connecter pour publier un commentaire.
Dans votre exemple, il semble que vous avez l'intention de Test() pour être un point d'entrée toutefois vous n'êtes pas à l'exportation. Même si vous commencez l'exportation, il peut ne pas fonctionner correctement avec C++ nom de "décoration" (déformation). Je vous suggère de redéfinir votre fonction:
La
extern "C"
composant supprimer C++ name mangling. Le__declspec(dllexport)
composant exporte le symbole.Voir http://zone.ni.com/devzone/cda/tut/p/id/3056 pour plus de détails.
Edit: Vous pouvez ajouter autant de points d'entrée que vous voulez de cette façon. Code appelant simplement devez connaître le nom du symbole à récupérer (et si vous êtes en train de créer un statique .lib, qui prend soin de lui pour vous).
OriginalL'auteur mah