Bonjour,
Quand je compile une dll qui exporte une fonction nommée write (ca ne marche qu'avec ce nom), et que dans cette fonction j'utilise la classe ofstream, que j'appelle cette fonction depuis une autre application, le programme bloque et ne se termine pas (ne me demandez pas comment j'en suis arrivé là...) :
dll.cpp
dll.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include "dll.h" #include <fstream> using namespace std; // a sample exported function void DLL_EXPORT write() { ofstream test("yoplait.txt"); test << "slt"; }
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif extern "C" void DLL_EXPORT write();
J'ai fait des tests intensifs seulement avec le chargement statique de dll (il semble que ça ne fonctionne pas non plus avec le chargement dynamique...). Je ne sais pas si ça un rapport, mais j'utilise code blocks.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "dll.h" int main() { write(); return 0; }
Autre info : quand j'ai débuggé le programme avec OllyDebug, j'ai remarqué (dans le call stack) des appels récursifs à la fonction exportée write
est-ce que quelqu'un pourrait m'expliquer ce qu'il se passe...
Partager