Есть dll программа, содержащая одну функцию:
Цитата | extern "C" unsigned _int16 _declspec(dllexport) incrementator(unsigned _int16 zm) { zm=zm+1; return zm; }
|
И есть программа вызывающая эту функцию:
Цитата | System::String^ str; unsigned _int16 i,res; HINSTANCE hdllinst;
str=textBox1->Text; try { i=Int16::Parse(str); } catch (FormatException^){} hdllinst = LoadLibraryEx(TEXT("newdll.dll"), 0, DONT_RESOLVE_DLL_REFERENCES); if (hdllinst){ functionDll fpFunction = (functionDll)GetProcAddress(hdllinst,"incrementator"); if (fpFunction) { res=fpFunction(i); }} FreeLibrary(hdllinst);
button1->Text=""+res;
|
При передаче аргумента в dll функцию, она получает совсем левое число (причем одно и тоже), увеличивает его на единицу и возвращает как результат. То есть результат неверный. Есть также программа Delphi вызывающая данную dll, результат аналогичный. Что делать? |