У меня есть DLL, которая предоставляет функцию:
extern "C" __declspec( dllimport ) __stdcall int EP_ProtectedStringByKey( char* Key, char* Left, int Len);
Заголовок файла C ++:
typedef int (*GetString)(const char *Key, const char *Str, int Len);
С этим кодом все работает нормально. Программа напишет в " example.txt " то, что она должна писать.
GetString _GetSTR;
int longueur;
string my_string;
const char *pmy_string;
HINSTANCE hInstLibrary = LoadLibrary("my.dll");
_GetSTR = (GetString)GetProcAddress(hInstLibrary, "EP_ProtectedStringByKey");
ofstream myfile("example.txt");
longueur = _GetSTR("key_421", NULL, 0);
cout << "Taille : " << longueur << endl;
myfile << "Size : " << longueur << endl;
my_string.resize(longueur); // resizing the string
pmy_string = my_string.c_str(); // Pointer to pmy_string
// ---- _GetSTR("key_421", pmy_string, longueur); ----
myfile << "Another line.\n";
myfile.close();
FreeLibrary(hInstLibrary);
Теперь, если я добавлю эту строку кода:
_GetSTR("key_421", pmy_string, longueur);
Мои данные хорошо печатает на экране:
cout << "Data : " << pmy_string << endl;
Но НИЧЕГО больше не записывается в файл « example.txt (« Другая строка »не записывается больше). Это похоже на то, что после заполнения переменной my_string моя программа отказалась записывать в файл. Но, как ни странно, на экране отображается содержимое pmy_string .
I предположим, я делаю что-то не так, но не могу понять, что ...
Спасибо за помощь,