Показать сообщение отдельно
Старый 02.10.2003, 09:51     # 1
BigFoot
Junior Member
 
Регистрация: 16.12.2002
Сообщения: 64

BigFoot Путь к славе только начался
Question Delphi DLL и MS VC++. Почти безнадежный случай.

Проблема в следующем. Есть библиотека, написанная на Delphi. Экспортируются ф-кция, которая должна быть использована в VC

Dump of file My.dll
File Type: DLL
Section contains the following exports for My.dll
00000000 characteristics
0 time date stamp Thu Jan 01 03:00:00 1970
0.00 version
1 ordinal base
12 number of functions
12 number of names

ordinal hint RVA name

1 0 00042E4C CheckString
...............
Обратите внимание на отсутствие "decorade"... Проблема именно с этим.
на си описываю прототип
typedef ULONG (*MYPROC)(ULONG,LPCSTR);
и импорт
HINSTANCE hinstLib;
unsigned int iResult;
bool runTimeLinkSuccess = FALSE;
MYPROC DllFunction;
hinstLib = LoadLibrary("my");
LPCSTR Buffer="Just a string";
if (hinstLib!=NULL) {
DllFunction = (MYPROC) GetProcAddress(hinstLib, "CheckString");
if (runTimeLinkSuccess = (NULL != DllFunction))
{
if (DllFunction != NULL) {
iResult=DllFunction(1,Buffer);
}
}
}
FreeLibrary(hinstLib);
Запускаю на выполнение и в месте вызова ф-кции получаю
"Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention."
Пересобрать библиотеку с экспортом stdcall нет возможности.
Идеи будут?
BigFoot вне форума