Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

problem with DLL

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Пытаюсь подключить к проекту на билдере чужую DLL.

получаю error loading type library.
что бы это могло быть?:-?

заранее спасибо
Страницы:
487
13 мая 2005 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by iri_iri
Пытаюсь подключить к проекту на билдере чужую DLL.

получаю error loading type library.
что бы это могло быть?:-?

заранее спасибо



А как ты ее подключаешь - статически или динамически?

246
13 мая 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by iri_iri
Пытаюсь подключить к проекту на билдере чужую DLL.

получаю error loading type library.
что бы это могло быть?:-?

заранее спасибо


ActiveX?

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
статически
285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
статически


Скроее всего она у тебя собрана под VC++, т.е. есть по крайне мере 2 стандарта DLL (не очень корректно выразился, но, полагаю, смысл ясен) Т.е. это coff и omf (последний точно не помню) В них различные правила задания имён. В комплекте с BCB есть утилтка, нечто вроде omf2coff.exe Почитай на неё документацию в справочнике Builder'а
Я столкнулся с такой же проблемой при работе с MySQL, причём DLL старой версии нормально конвертируется, а новой - нехочет :(

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Romik
Скроее всего она у тебя собрана под VC++, т.е. есть по крайне мере 2 стандарта DLL (не очень корректно выразился, но, полагаю, смысл ясен) Т.е. это coff и omf (последний точно не помню) В них различные правила задания имён. В комплекте с BCB есть утилтка, нечто вроде omf2coff.exe Почитай на неё документацию в справочнике Builder'а
Я столкнулся с такой же проблемой при работе с MySQL, причём DLL старой версии нормально конвертируется, а новой - нехочет :(


вот что я получила
COFF to OMF Converter Version 1.0.0.74 Copyright (c) 1999, 2000 Inprise Corporation
ERROR: COFF error: E:\IRA\a.dll
(coffread.cpp, 1502) : invalid machine type detected

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
А lib-файл подключен к проекту? При неявном связывании требуется.
285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
вот что я получила
COFF to OMF Converter Version 1.0.0.74 Copyright (c) 1999, 2000 Inprise Corporation
ERROR: COFF error: E:\IRA\a.dll
(coffread.cpp, 1502) : invalid machine type detected



Попробуй, утилитку tdump (тоже есть в комплекте BCB) посмотри что за инфа будет в заголовках. Там может быть слишком много информации, я ключики не помню, тебя должны интересовать только заголовок, т.е. та "шапочка" (строчек 20-50) где будут указаны смещения в сегментах, имена, версии и т.д. Погляди, может найдешь там чё-нибудь путное. А вообще, думаю тут нужно искать другую версию этой DLL

285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by Mоngооsе
А lib-файл подключен к проекту? (хотя это тоже из области Visual C).



Если omf2coff ругается, то lib файл здесь нипричём, до него ещё не дощли. Правда если DLL изначально не coff :)

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Romik
Если omf2coff ругается, то lib файл здесь нипричём, до него ещё не дощли. Правда если DLL изначально не coff :)


Цитата:
Originally posted by iri-iri
получаю error loading type library.
что бы это могло быть?

IMHO type library это lib-файл. Как раз дело до dll не доходит.

285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by Mоngооsе
IMHO type library это lib-файл. Как раз дело до dll не доходит.



Бья, точно :) iri_iri, ты сделай implib :) Т.е. создай LIB от DLL. А omf2coff можешь приминить для lib-файла, который шёл с DLL. Вобщем, вот тебе 2 способа

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
это?
******************************************************************************
Section: Exports
Flags: 00000000
Time Stamp: 394F716B : Tue Jun 20 16:28:11 2000
Major Version: 0000
Minor Version: 0000

Exports from TLXEXPORTAPI.dll
19 exported name(s), 19 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
00001000 1 0000 DSE_Alloc
00001090 2 0001 DSE_Connect
000010A0 3 0002 DSE_Disconnect
000010B0 4 0003 DSE_Free
000011F0 5 0004 DSE_GetDataByName
00001360 6 0005 DSE_GetDataFirst
00001620 7 0006 DSE_GetDataMaxBufLen
000014A0 8 0007 DSE_GetDataNext
000015E0 9 0008 DSE_GetMsgTag
000011B0 10 0009 DSE_QueryCancel
00001190 11 000A DSE_QueryCurrent
000011D0 12 000B DSE_QueryIsPending
00001170 13 000C DSE_QueryNext
00001130 14 000D DSE_QueryRun
00001110 15 000E DSE_QueryRunSingle
000010E0 16 000F DSE_SendAck
00001070 17 0010 DSE_SetCallback
00001030 18 0011 DSE_SetParams
00001790 19 0012 DSE_WriteDealInfo

******************************************************************************
Section: Resources
Flags: 00000000
Time Stamp: 00000000
Major Version: 0000
Minor Version: 0000
7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
блин. я уже вообще ничего не понимаю. вот у меня лежит dll и lib.
если не трудно, пошагогво, что мне надо сделать чтобы dll подключить?
285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
блин. я уже вообще ничего не понимаю. вот у меня лежит dll и lib.
если не трудно, пошагогво, что мне надо сделать чтобы dll подключить?



Вариант №1:
implib *.dll *.lib

Получаешь lib-файл для dll. (только сохрани предварительно где-нибудь копии dll и lib файлов)

Вариант №2:
omf2coff last.lib new.lib

Получишь lib-файл в нужном формате.


Только я не помню последовательность исходного/конечного файла в параметрах команд. В подсказке будет указан парядок следования параметров

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
блин. я уже вообще ничего не понимаю. вот у меня лежит dll и lib.
если не трудно, пошагогво, что мне надо сделать чтобы dll подключить?


1. Ctrl+Shift+F11. Появится окно Project Options.
2. На странице Directories/Conditionals есть ComboBox: Library path
3. Или в этот lib.path перекопировать Lib-файл, или добавить каталог, в которой лежит этот файл. (второй вариант лучше, но сложнее :))

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Romik
Вариант №1:
implib *.dll *.lib

Получаешь lib-файл для dll. (только сохрани предварительно где-нибудь копии dll и lib файлов)



Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation
Error E:\IRA\: unable to open file

Цитата:
Originally posted by Romik
Вариант №2:
omf2coff last.lib new.lib

Получишь lib-файл в нужном формате.


вроде получили новый x.lib размером 2К.
теперь что и как импортировать?:D

285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation
Error E:\IRA\: unable to open file



вроде получили новый x.lib размером 2К.
теперь что и как импортировать?:D



попробуй:
implib filename.lib filename.dll

А как импортировать, Mоngооsе рассказал. Я обычно кидаю lib файлы в каталог с проектом и через Project Manager добавляю их. (Project manager->Add Files)

P.S.
Кстати, а как ты вообще паешься подключить dll к проекту (статически) - опиши

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Mоngооsе
1. Ctrl+Shift+F11. Появится окно Project Options.
2. На странице Directories/Conditionals есть ComboBox: Library path
3. Или в этот lib.path перекопировать Lib-файл, или добавить каталог, в которой лежит этот файл. (второй вариант лучше, но сложнее :))



ок!!! все это я проделала.
он откомпилился!

а теперь как мне обратиться к ф-ию из DLL.
надо мне писать #include...?
сорри,я- чайник...:D первый раз с длл вообще столкнулась. :D :D :D

285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
ок!!! все это я проделала.
он откомпилился!

а теперь как мне обратиться к ф-ию из DLL.
надо мне писать #include...?
сорри,я- чайник...:D первый раз с длл вообще столкнулась. :D :D :D



Ой, а ты ОНА :) Хе, похвально =)

Если ты подключила стастически, то можешь обращаться напрямую к функциям, как к любым другим. Если с dll шёл header-файл (*.h) то подключи и его (#include "filename.h") Это на тот случай, если там используются классы и т.д.

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Romik
Ой, а ты ОНА :) Хе, похвально =)

Если ты подключила стастически, то можешь обращаться напрямую к функциям, как к любым другим. Если с dll шёл header-файл (*.h) то подключи и его (#include "filename.h") Это на тот случай, если там используются классы и т.д.



нужно ли мне писать
#include "a.lib"?
a.lib - это тот который получился с помощью coff2omf
или что-то другое мне надо инклудить, потосму что иначе получается:
[C++ Error] Unit1.cpp(25): E2268 Call to undefined function 'DSE_Alloc' - а функа эта там есть в длл...

259
13 мая 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by iri_iri
нужно ли мне писать
#include "a.lib"?
a.lib - это тот который получился с помощью coff2omf
или что-то другое мне надо инклудить, потосму что иначе получается:
[C++ Error] Unit1.cpp(25): E2268 Call to undefined function 'DSE_Alloc' - а функа эта там есть в длл...


Ирочка не #include "a.lib" , а #include "a.h", если у Вас такой файл присутствует. Если нет. То сделайте его и занесите в него строку типа

 
Код:
type DSE_Alloc(param1,...,paramn)
//где type - тип возвращаемого функцией значения
//    param1 - описание 1-го параметра
//    ....
//    paramn - описание n-го параметра


ЗЫ: А почему бы Вам не воспользоваться функцией LoadLibrary("a.dll"); в runtime?
10
13 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Mоngооsе
IMHO type library это lib-файл.


Или кто-то тупит, или здесь уже зеленые человечки...

Type library - это TLB, а не DLL.

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Freeman
Или кто-то тупит, или здесь уже зеленые человечки...
Type library - это TLB, а не DLL.

И то и другое. Один зеленый человечик есть(BioUnit). На счет второго, где ты вычитал, что type library это dll???

10
13 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Mоngооsе
И то и другое. Один зеленый человечик есть(BioUnit). На счет второго, где ты вычитал, что type library это dll???


Хы, точно зеленые человечки. Хотя...

На работе разрешение маленькое, вот и приходится пользовать масштабирование в сторону уменьшения. А в нем что dll, что lib - палки перед глазами. Или зеленые человечки...

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Freeman
Хы, точно зеленые человечки. Хотя...
На работе разрешение маленькое, вот и приходится пользовать масштабирование в сторону уменьшения. А в нем что dll, что lib - палки перед глазами. Или зеленые человечки...

Это цвет не совсем удачный. Контрастность маленькая.

10
13 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Mоngооsе
Это цвет не совсем удачный. Контрастность маленькая.


Тема уже обсуждалась. Все путем.

Работать надо меньше, и за хорошим монитором сидеть, чтобы перед глазами зеленые человечки не прыгали.

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Freeman
Тема уже обсуждалась. Все путем.

Работать надо меньше, и за хорошим монитором сидеть, чтобы перед глазами зеленые человечки не прыгали.

SyncMaster 1200 NF (22"). Дисплею меньше года, но этот сайт показывает, как бы был выгоревшим. Ладно, по Web я не спец., так что пусть будет: цвета сайта подобраны, согласно советам офтальмологов.

10
13 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Mоngооsе
SyncMaster 1200 NF (22").


Блин, так я про себя больше. Кто сглупил? Увидел, блин, чего не было!

Самое интересное, что цветовую гамму я нормально воспринимаю, а вот разрешения не хватает. Вот дома все нормально. Пойду-ка домой.

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by AlexandrVSmirno
Ирочка не #include "a.lib" , а #include "a.h", если у Вас такой файл присутствует. Если нет. То сделайте его и занесите в него строку типа
 
Код:
type DSE_Alloc(param1,...,paramn)
//где type - тип возвращаемого функцией значения
//    param1 - описание 1-го параметра
//    ....
//    paramn - описание n-го параметра



сделала такой файл, а билдер в ответ:
[Linker Error] Unresolved external 'DSE_Alloc(void * *)' referenced from E:\IRA\UNIT1.OBJ

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by AlexandrVSmirno
ЗЫ: А почему бы Вам не воспользоваться функцией LoadLibrary("a.dll"); в runtime?


и еще:
а можно подробнее. на тему runtime:D

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
и еще:
а можно подробнее. на тему runtime:D

Как вижу ты уже падаешь от смеха...

Ф-ия DSE_Alloc неправильно описана, поэтому линкер его ненаходит. При runtime, тоже нужно описать прототип ф-ии. Кроме этого, с runtime намного больше морок.

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Mоngооsе
Как вижу ты уже падаешь от смеха...

Ф-ия DSE_Alloc неправильно описана, поэтому линкер его ненаходит. При runtime, тоже нужно описать прототип ф-ии. Кроме этого, с runtime намного больше морок.



да уж... и смех этот истерический...

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
блин, а где же мнге взять все эти описания всех функций?
285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
блин, а где же мнге взять все эти описания всех функций?



Ты где взяла эту DLL? Почему ты решила её использовать? Есть ли некое описание этой библиотеки? Был ли в поставке с DLL заголовочный файл (*.h)? Неужели ты решила использовать этот файл только потому что он тебе понравился по дампу :) Скорее всего именна этих ф-ий уже где-то прописаны, если нет, ещё раз подумай, какие ф-ии ты собираешься импользовать и пропиши их прототипы (т.е. описание), причём это необязательно делать в заголовочном файле (*.h). Вообщем проведи анализ и постарайся найти решение задачи на основе результатов.

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
блин, а где же мнге взять все эти описания всех функций?

Можно скачать утилиту http://www.gold-software.com/NeuronPEDisassembler-file7790.html

Запустить PEDisassembler.exe.

Открыть нужный DLL в виде View Detached (правая кнопка мыши-попуп меню).

В новом окне активизировать страницу Objects.

И на дереве выбрать Code->Function Statistics->Exports

На Exports щелкнуть правой мышкой. Из popup меню выбрать View as Text.
В новом окне снова щелчек с правой мышкой и выбрать Save as...

7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Romik
Ты где взяла эту DLL? Почему ты решила её использовать? Есть ли некое описание этой библиотеки? Был ли в поставке с DLL заголовочный файл (*.h)? Неужели ты решила использовать этот файл только потому что он тебе понравился по дампу :) Скорее всего именна этих ф-ий уже где-то прописаны, если нет, ещё раз подумай, какие ф-ии ты собираешься импользовать и пропиши их прототипы (т.е. описание), причём это необязательно делать в заголовочном файле (*.h). Вообщем проведи анализ и постарайся найти решение задачи на основе результатов.



Сорри! запутала я вас. Нашла таки я этот .h...
но теперь не компилится: пишет
[C++ Error] dse_api.h(142): E2238 Multiple declaration for 'EXPORT'
на
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);

488
13 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
Сорри! запутала я вас. Нашла таки я этот .h...
но теперь не компилится: пишет
[C++ Error] dse_api.h(142): E2238 Multiple declaration for 'EXPORT'
на
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);

Наверно вручную созданный h файл остался. Нужно убрать тот #include

285
13 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by iri_iri
Сорри! запутала я вас. Нашла таки я этот .h...
но теперь не компилится: пишет
[C++ Error] dse_api.h(142): E2238 Multiple declaration for 'EXPORT'
на
RETCODE FAR PASCAL EXPORT DSE_Alloc(HDSECLNT *phClient);



Надеюсь ты уже убрала все то, что писала до этого, т.е. type DSE_Alloc(param1,...,paramn)
Возможно нужно определить как-нибудь константу

 
Код:
#define CONST_NAME 1

У меня подобные траблы, когда я работаю с mysqllib.dll Там при подключении mysql.h нужно указать __LCC__
 
Код:
#define __LCC__
#include "mysql.h"


Вобщем погляди найденый тобой *.h может там чё-нибудь в коментариях сказано.
285
13 мая 2005 года
Romik
479 / / 24.11.2002
Пардон за флуд, но кажется эта тема, близка к рекорду по количеству ответов за 1 времению Я зашёл проверить почту и офигел, когда увидел 20 писем на эту тему (подписался при отправке поста). Вот таки дела :)
7.9K
13 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Romik
Пардон за флуд, но кажется эта тема, близка к рекорду по количеству ответов за 1 времению Я зашёл проверить почту и офигел, когда увидел 20 писем на эту тему (подписался при отправке поста). Вот таки дела :)



В ЭТОМ ТЫ АБСОЛЮТНО ПРАВ.
проблема только в том, что я до сих пор не знаю чего он ругается...
буду думать дальше

7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
вставила я вот такое:
#define EXPORT __declspec(dllexport)

теперь компилится, но когда пытаюсь запустить на выполнение опять:
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\UNIT1.OBJ

да что за ерунда такая????????
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог