Bonjour à tous,
J'essaie d'utiliser une DLL externe(DLL1) développée en C pour mon application C#/WPF.
J'ai commencé à écrire une nouvelle DLL(DLL2), également en C, pour encapsuler les fonctions de la DLL1 pour que les types soient compatibles (PInvoke).
Or ma DLL1 appelle des fonctions système type "LoadLibrary" et "GetProcAddress".
A l'exécution, mon programme plante lors de l'appel à LoadLibrary dans la DLL1. Ci-dessous, mon code si ça vous tente..
J'ai tenté pas mal de combinaisons __stdcall ou bien __cdecl, ça n'a rien donné.
Merci de vos idées, je bosse sous VS2010C++ & VS2010C#.
Olivier
##DLL1.h (oui y'a du code dans le .h, je ne gère pas ça..)
##DLL2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 tStatus LoadDLL(void) { if ((hInst=LoadLibrary(_LOCAL_DLL_STR)) == NULL) { if ((hInst=LoadLibrary(REFMUX_STR(_GLOBAL_DLL_STR))) == NULL) { return(STATUS_ERR_FILEDLL); } } return STATUS_OK; }
## C Sharp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "DLL1.h" extern "C" { __declspec (dllexport) tStatus __stdcall Bdg_LoadDll(void) { tStatus udtRsult; udtRsult = LoadDLL(); return udtRsult; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class DllImport { [DllImport(DLL2_PathName, CallingConvention = CallingConvention.StdCall)] public static extern char Bdg_LoadDll(); public DllImport() { Bdg_LoadDll(); // Ca plante! } }
Partager