bonsoir,
Il se trouve que j'ai une fct dans une dll qu'il faut que je retrouve... jusque la pas de probleme mais si celle ci comporte des arguments et je me retrouve avec une erreur "Run type Failure#0"
mon dll.h
mon dll.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifdef _WINDLL #define DLLDEC __declspec(dllexport) #endif extern "C" {class DLLDEC test { public:}test(); ~test(); int lol;}; DLLDEC test* TestDll(int nb);
et mon programme principal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <iostream> #include "test.h" test::test() : lol(12) { } DLLDEC test* TestDll(int nb) {std::cout << "allloooo : " << nb << std::endl; test* tmp = new test; std::cout << tmp->lol << std::endl; return (tmp);}
J'ai essayer de glisser des __stdcall un peu de partout mais rien a faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 include <windows.h> class test { public: int lol; }; typedef test* (WINAPI* RVALUE)(UINT); static RVALUE g_RValue = NULL; int main() {HMODULE hmodUser32 = LoadLibrary(TEXT("test.dll")); if (hmodUser32 != NULL) { g_RValue = (RVALUE) GetProcAddress(hmodUser32, "TestDll"); }}if (g_RValue == NULL) std::cout << "erreur load class" << std::endl; else { test* tmp = g_RValue(2); std::cout << tmp->lol << std::endl; }if (hmodUser32 != NULL) FreeLibrary(hmodUser32); system("PAUSE"); return 0;
On peu d'aide serait cool ^^
bonne nuit
Partager