problem with DLL
получаю error loading type library.
что бы это могло быть?:-?
заранее спасибо
А если, в .h-файл вместо
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);
написать
WINAPI DSE_Alloc(HDSECLNT *phClient);
линкер тоже не находит ф-ию?
Этот dll, какой-то очень старый.
А если, в .h-файл вместо
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);
написать
WINAPI DSE_Alloc(HDSECLNT *phClient);
линкер тоже не находит ф-ию?
АНАЛОГИЧНО!
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ
блин, да что ж делать, то?
АНАЛОГИЧНО!
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ
блин, да что ж делать, то?
WINAPI __declspec(dllexport) DSE_Alloc(DECLNT *phClient);
тоже не катит? :)
Что это за библиотека?
WINAPI __declspec(dllexport) DSE_Alloc(DECLNT *phClient);
тоже не катит? :)
Что это за библиотека?
для доступа к данным одной системки.
:}
анлогично.
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ
доктор, есть надежда?
для доступа к данным одной системки.
:}
анлогично.
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ
доктор, есть надежда?
Есть. Попробуй создать новый проект. Заново подключи к нему библиотеку. Вобщем сделай всё заново. Кстати, а полный билд пробывала делать?.
для доступа к данным одной системки.
:}
анлогично.
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ
доктор, есть надежда?
Угу. Нужно упорно трудиться в течении несколько лет, и такие проблемы будут решаться за пару минут.
PEDisassembler весит 1.5Мб. Можно скачать и посмотреть в нем на этот dll. Она показывает и возвращаемый результат. Напр. на рис. ниже видно, что метод CreateObject возвращает CObject*
А системка это что? Linux, FreeBSD... :)
Есть. Попробуй создать новый проект. Заново подключи к нему библиотеку. Вобщем сделай всё заново. Кстати, а полный билд пробывала делать?.
ок. значит дела такие:
сделала новый прект.
инклуднула .h - класс: компилится, ранится - все супер.
НО...
добавила кнопку и добавила
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HDSECLNT hClnt = NULL;
//HDSECLNT описан в библиотеке
/* Allocate client handle */
if (DSE_Alloc(&hClnt) == DSE_RETCODE_OK)
//тоже описано все в библиотеке
{}
}
и проранила:
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ
Угу. Нужно упорно трудиться в течении несколько лет, и такие проблемы будут решаться за пару минут.
PEDisassembler весит 1.5Мб. Можно скачать и посмотреть в нем на этот dll. Она показывает и возвращаемый результат. Напр. на рис. ниже видно, что метод CreateObject возвращает CObject*
ок. щас уже буду качать.;)
А системка это что? Linux, FreeBSD... :)
я же не сказала ОС, я сказала "системка".
ок. щас уже буду качать.;)
я же не сказала ОС, я сказала "системка".
Если ничего не получится, вышли/выложи эту DLL с lib и header файлами в архиве, угу.
ок. щас уже буду качать.;)
я же не сказала ОС, я сказала "системка".
Ясно, что-то архи секретное.
Но ты подключила lib файл к проекту?
Типа меню Project->Add to Project...
самое интересное, что я вижу все функи:
Что-то нужно сделать, чтоб и линкер тоже видел эти функи. lib-файл подключен к проекту?
Что-то нужно сделать, чтоб и линкер тоже видел эти функи. lib-файл подключен к проекту?
да подключен.
да подключен.
Тогда нужно бы посмотреть какой вид имеет DSE_Alloc(). Вместо save As, можно бы использовать View As Text. Имеет значение calling convention и return type.
Тогда нужно бы посмотреть какой вид имеет DSE_Alloc(). Вместо save As, можно бы использовать View As Text. Имеет значение calling convention и return type.
ну вот:
ну вот:
Ничего не видно. :D
Drawing2.gif нужно было бы подключить в качестве файла.
Возможно Romik прав, DLL имеет VisualC COFF формат и нужно его перевести в OMF формат
Дает что-то замена в h-файле WINAPI __declspec(dllexport) DSE_Alloc(DWORD phClient)
А в обработчике OnButton
{
HDSECLNT hClnt = NULL;
//HDSECLNT описан в библиотеке
/* Allocate client handle */
if (DSE_Alloc((DWORD)&hClnt) == DSE_RETCODE_OK)
//тоже описано все в библиотеке
{}
}
Ничего не видно. :D
Drawing2.gif нужно было бы подключить в качестве файла.
серьезно не видно??
0x1000 - 0x20 DSE_Alloc(dword param_1)
Calling Convention = stdcall
DSE_Alloc
Labels
Calls (2)
External Gotos (1)
asm
Parsed Asm
C++
0x1030 - 0x3b DSE_SetParams(dword param_1, dword param_2, dword param_3, dword param_4, dword param_5, dword param_6, dword param_7, dword param_8)
0x1070 - 0x14 DSE_SetCallback(dword param_1, dword param_2)
0x1090 - 0xc DSE_Connect(dword param_1)
0x10a0 - 0xc DSE_Disconnect(dword param_1)
0x10b0 - 0x23 DSE_Free(dword param_1)
0x10e0 - 0x30 DSE_SendAck(dword param_1, dword param_2, dword param_3, dword param_4, dword param_5, dword param_6)
0x1110 - 0x16 DSE_QueryRunSingle(dword param_1, dword param_2, dword param_3)
0x1130 - 0x39 DSE_QueryRun(dword param_1, dword param_2, dword param_3, dword param_4)
0x1170 - 0x13 DSE_QueryNext(dword param_1, dword param_2)
0x1190 - 0x13 DSE_QueryCurrent(dword param_1, dword param_2)
0x11b0 - 0x11 DSE_QueryCancel(dword param_1, dword param_2)
0x11d0 - 0x11 DSE_QueryIsPending(dword param_1, dword param_2)
0x11f0 - 0xc7 DSE_GetDataByName(dword param_1, dword param_2, dword param_3, dword param_4, dword param_5)
0x1360 - 0x13e DSE_GetDataFirst(dword param_1, dword param_2, dword param_3, dword param_4, dword param_5, dword param_6)
0x14a0 - 0x13e DSE_GetDataNext(dword param_1, dword param_2, dword param_3, dword param_4, dword param_5, dword param_6)
0x15e0 - 0x38 DSE_GetMsgTag(dword param_1, dword param_2, dword param_3)
0x1620 - 0x152 DSE_GetDataMaxBufLen(dword param_1, dword param_2, dword param_3)
0x1790 - 0x20 DSE_WriteDealInfo(dword param_1, dword param_2, dword param_3, dword param_4, dword param_5)
0x559f - 0x9d PEMain(dword param_1, dword param_2, dword param_3)
Возможно Romik прав, DLL имеет VisualC COFF формат и нужно его перевести в OMF формат
так я вроде это делала...
coff2omf...
Заметил.
Дает что-то замена в h-файле WINAPI __declspec(dllexport) DSE_Alloc(DWORD phClient)
А в обработчике OnButton
{
HDSECLNT hClnt = NULL;
//HDSECLNT описан в библиотеке
/* Allocate client handle */
if (DSE_Alloc((DWORD)&hClnt) == DSE_RETCODE_OK)
//тоже описано все в библиотеке
{}
}
а вот этого я вообще не поняла...
серьезно не видно??
Серьезно не было видно. У меня в browsere отключен вывод картинок... :)
Если не получится, тогда нужно будет явно подключить DLL. С этим больше морок, но он гибче. Но это уже лучше будет сделать завтра.
а вот этого я вообще не поняла...
А что здесь не понятно? Я поменял только тип аргумента.
Серьезно не было видно. У меня в browsere отключен вывод картинок... :)
Вчера смотрел нашего преза по телеку и думал, никто не может ему подсказать, чтоб говорил громче, я понимаю только каждое 2-е 3-е слово. Потом сделал телевизор громче и все OK :).
Если не получится, тогда нужно будет явно подключить DLL. С этим больше морок, но он гибче. Но это уже лучше будет сделать завтра.
ок.тогда явно до завтра. буду ждать. :D
не заметила...:D на счет изменения типа аргумента
не заметила...:D
Ok. Но я теперь заметил, что DES_Alloc не возвращает результата.
Так что, лучше бы написать в h
void DES_Alloc(DWORD phClient);
и
{
HDSECLNT hClnt = NULL;
DSE_Alloc((DWORD)&hClnt);
if(hClnt!=NULL)
{
}
}
Ok. Но я теперь заметил, что DES_Alloc не возвращает результата.
Так что, лучше бы написать в h
void DES_Alloc(DWORD phClient);
и
{
HDSECLNT hClnt = NULL;
DSE_Alloc((DWORD)&hClnt);
if(hClnt!=NULL)
{
}
}
но в .h написано
typedef signed short RETCODE;
...
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);
а вот этого я вообще не поняла...
Он тебе предлагает заменить длинющую строку, более простой. Хотя думаю это непринципиально, так как одно заменятется на другое - равносильное.
Знаешь что, попробуй всё же утилитку implib Создай свой lib файл прямо от dll. Если получится хуеватенький файлец, типа 2 Kb да ещё и весь FF, то сделай impdef filename.def filename.lib Он создаст тебе def файл от lib В нём будут имена всех экспортируемых функций. Попробуй подключить библиотеку динамически используя указаные имена. Скорее всего име будет иметь вид "_FuncName" или "@FuncName" Вобщем поэксперементируй. Если получится подключить динамически, то надежда ещё теплится. Удачи!
но в .h написано
typedef signed short RETCODE;
...
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);
Кстати, а где определена констаната RETCODE(выдели в редакторе кода, нажми правую клавишу мыши, выбери Find Diclaration)
но в .h написано
typedef signed short RETCODE;
...
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);
Но PE disassembler показывает, что ф-ия не возвращает результата.
Кстати, а где определена констаната RETCODE(выдели в редакторе кода, нажми правую клавишу мыши, выбери Find Diclaration)
я так понимаю что это определение типа...
typedef signed short RETCODE;
я так понимаю что это определение типа...
typedef signed short RETCODE;
Ну вот Mоngооsе толкает весьма разумную мыслю. Если дизассемблер показывает что, ф-ия ничего не возвращает, то это может быть причиной, хотя в нашем мире всё возмножно :) Что выдаёт impdef? какие там имена ф-ий? Какого типа возвращаемые значения. То что в DLL ничего не возвращается - замечательно, но ведь линкуется через lib. Хрен его знает чё там запихнуто. Идеальном выриантом является implib, но он работает только с родным форматом coff.
Ну вот Mоngооsе толкает весьма разумную мыслю. Если дизассемблер показывает что, ф-ия ничего не возвращает,
Здесь может быть и другое. По всей вероятности pedisassembler не умеет работать с OMG форматом.
Ну вот Mоngооsе толкает весьма разумную мыслю. Если дизассемблер показывает что, ф-ия ничего не возвращает, то это может быть причиной, хотя в нашем мире всё возмножно :) Что выдаёт impdef? какие там имена ф-ий? Какого типа возвращаемые значения. То что в DLL ничего не возвращается - замечательно, но ведь линкуется через lib. Хрен его знает чё там запихнуто. Идеальном выриантом является implib, но он работает только с родным форматом coff.
Borland Impdef Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation
Error E:\IRA\EURO\Reuters_Documentation\sputnik\sputnik\www\TLXExportAPI.lib: un
known file type
///... может (скорее всего так и есть..) я туплю...:}
Бросай, но только у меня нет под рукой компилятора :( Я сей час в офисе, а компилятор дома. Но хотя бы *.h можно поглядеть. Млять, и наверное это завтра (т.е. часа через 2-3) а то спать хочу, того и гляди - развалюсь. До связи.
куда?
заархивировать эти 2 файла и сюда или на [email]vl2@freemail.hu[/email].
Но lib файл нужен исходный, чтоб по нему можно было построить def файл.
Хм... что-то долго доходит. email адрес нужно было бы скопировать, а не вручную набирать.
шутишь, да?...
скопировала я
кинула еще раз