Bug bizarre.. (nom de fonction interdit ?)
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
Code:
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";
} |
dll.h
Code:
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(); |
main.cpp
Code:
1 2 3 4 5 6 7 8
|
#include "dll.h"
int main()
{
write();
return 0;
} |
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.
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...