Ошибка выполнения в Callback, где получен возврат для вызванной другой DLL динамически - PullRequest
1 голос
/ 03 июня 2011

Я стараюсь быть более ясным на этот раз. У меня есть основная программа для тестирования, которая вызывает Sinacor.DLL, которая для его включения вызывает PasswordManager.dll 3-й части DLL без кода (это система IDM);

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Sinacor.DLL
...code ....
LPSTR  *GetSenha (int FAR nicas)  
.... code..... 
char * Mypwd = NULL; // for return porpouse
Mypwd = call dynamically PasswordManager.dll // works fine
return Mypwd; } // return the encrypted password, in test case return "sinacor01"
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Sinacor..h

extern "C" {     LPSTR FAR *GetSenha(int); }

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
the Sinacor.dll is also loaded dynamically too in the main program for testing:
the main  code: 

.....some code ..............                   
typedef LPSTR (CALLBACK *ULPRET)(int);         
LPSTR   Mypwd = " ";
hLib = LoadLibrary ( "C:\\Ricardo\\Sinacor\\Sinacor.dll");

lpfnDLLProc = (ULPRET) GetProcAddress (hLib,"GetSenha");      

Mypwd =   (*lpfnDLLProc)(0); //Got runtime error in this statement 

Теперь я являюсь ошибкой соглашения о параметрах, поэтому я выполнил (main и Sinacor.dll) как программы на C с соглашениями на C. Стек показывает все модули как модуль C с соглашениями C Должен работать, но не работает. Пожалуйста, совет.

обе программы компилировались с _cstl (как CALLBACK).

...