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

Ваш аккаунт

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

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

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

problem with DLL

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

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

заранее спасибо
Страницы:
488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
ну как?

Пока еще нормально. Убрал слово EXPORT. Компилятор просит не травит его COFF форматом.

488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
шутишь, да?...
скопировала я
кинула еще раз

Пришло только один раз.

488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Вроде все нормально. exe модуль ищет dll-у. Отправляю h и lib обратно. Надеюсь получится с первого раза....
7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Mоngооsе
Вроде все нормально. exe модуль ищет dll-у. Отправляю h и lib обратно. Надеюсь получится с первого раза....


рассказывай что мне надо пошагово сделать.
1)создаю новый проект.
...

488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Ушло
7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Mоngооsе
Ушло


пришло

488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
рассказывай что мне надо пошагово сделать.
1)создаю новый проект.
...



1)создаю новый проект.
2)добавляется к проекту lib файл
3)в Unit*.h пишется #include "dse_api.h"
4)в Unit*.cpp

 
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  HDSECLNT hClnt = NULL;
  if (DSE_Alloc(&hClnt) == DSE_RETCODE_OK)
  {
  ShowMessage("Hi!");
  }
}
7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Mоngооsе
1)создаю новый проект.
2)добавляется к проекту lib файл
3)в Unit*.h пишется #include "dse_api.h"
4)в Unit*.cpp
 
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  HDSECLNT hClnt = NULL;
  if (DSE_Alloc(&hClnt) == DSE_RETCODE_OK)
  {
  ShowMessage("Hi!");
  }
}



[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\EURO\REUTERS_DOCUMENTATION\SPUTNIK\SPUTNIK\B\UNIT1.OBJ

7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
сорри. это я кое- что неправильно сделала....
А ТЕПЕРЬ ПОШЛО!!!!!!!!!!!!!!!!!!!!1:D :D :D :D :D :D :D :D
СПАСИБОЧКИ!!!!!!!!!!!!!!!!!!
Я ТЕБЯ ОБОЖАЮ!!!!!!!!!!!!!!!!!!!!111111
488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\EURO\REUTERS_DOCUMENTATION\SPUTNIK\SPUTNIK\B\UNIT1.OBJ

У тебя какой Builder? Может отправлю весь проект?

488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
сорри. это я кое- что неправильно сделала....
А ТЕПЕРЬ ПОШЛО!!!!!!!!!!!!!!!!!!!!1:D :D :D :D :D :D :D :D
СПАСИБОЧКИ!!!!!!!!!!!!!!!!!!
Я ТЕБЯ ОБОЖАЮ!!!!!!!!!!!!!!!!!!!!111111

Thanks ;). Но после таких слов я наверно не засну :)

7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
Цитата:
Originally posted by Mоngооsе
У тебя какой Builder? Может отправлю весь проект?


ПОШЛО!!!!!!!!!!!!!!!!!
БОЖЕ КАКАЯ РАДОСТЬ!!!!!!!!!
А ЧТО ТЫ СДЕЛАЛ?

7.9K
14 мая 2005 года
iri_iri
48 / / 15.04.2005
ИТОГО:
1. Наша тема заняла первое место по длинне за год.

2. У меня подключилась длл-ка( что и требовалось)

3. Mongoose - лучший друг всех времен и народов(однако огромное спасибо всем, кто принимал участие, в осбенноси Romik-у)

4. что сделал Mongoose (лучший друг всех времен и народов), я думаю он еще напишет.

5. у меня поменялся статус с Новичка на Бывалого.

Вывод:
чайники, типа меня, побольше обращайтесь за помощью в форумы, это полезно, как показывает практика.
488
14 мая 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by iri_iri
ИТОГО:
4. что сделал Mongoose (лучший друг всех времен и народов), я думаю он еще напишет.

1.Удалил слова EXPORTS из h-файла.
2. coff2omf TLXExportAPI.lib TLXExportAPI2.lib
3. удалил старый TLXExportAPI.lib и переименвал TLXExportAPI2.lib в TLXExportAPI.lib
...

Но теперь уже серьезно споки... ;)

285
14 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by Mоngооsе
1.Удалил слова EXPORTS из h-файла.
2. coff2omf TLXExportAPI.lib TLXExportAPI2.lib
3. удалил старый TLXExportAPI.lib и переименвал TLXExportAPI2.lib в TLXExportAPI.lib
...

Но теперь уже серьезно споки... ;)



Да... дядя, всё же твоя мысль оказалась верной, по поводу того что функция ничего не возвращает :) Интересно, а в коментариях заголовочного файла указано какого он века? :) Итого, нетревиальным в данном топике оказалось обнаружить факт того, что ф-ии невозвратные и удалить неверное определение EXPORT. Сэр, надо отдать вам должное - продержались до победного. Страна не забудет своих героев ;)

1.8K
14 мая 2005 года
Azaze1
102 / / 08.01.2005
Прива! =)
Тоже небольшая проблема с dll.
Сооружаю свою dll, там простенькая функция, принимает и возвращает char*. Собираю проект - получается dll, всё путём. Динамическое присоединение полученной dll к любому из проектов
идёт на ура, а вот пытаюсь получить указатель на функцию методом
Func = (FType*)GetProcAddress(dll,"_myfunction");
указатель Func оказывается пустым. Т.е. вроде как и функции такой в библиотеке нет. Всё проверял несколько раз, имена и входные параметры везде совпадают.
/*
HINSTANCE dll;
typedef char (__import * FType(char *));
FType * Func;
*/
В чём может быть проблема, не подскажете?
285
14 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by Azaze1
Прива! =)
Тоже небольшая проблема с dll.
Сооружаю свою dll, там простенькая функция, принимает и возвращает char*. Собираю проект - получается dll, всё путём. Динамическое присоединение полученной dll к любому из проектов
идёт на ура, а вот пытаюсь получить указатель на функцию методом
Func = (FType*)GetProcAddress(dll,"_myfunction");
указатель Func оказывается пустым. Т.е. вроде как и функции такой в библиотеке нет. Всё проверял несколько раз, имена и входные параметры везде совпадают.
/*
HINSTANCE dll;
typedef char (__import * FType(char *));
FType * Func;
*/
В чём может быть проблема, не подскажете?




Опять??? Ещё одни сутки я не выдержу. Всё хочу спать, ещё полчаса и еду домой (наконец-то!) :)

Кажется делать нужно так(пишу по памяти):

Код:
//попробуй один из 4 вариантов
(char (__import *Func(char *)));
//
(char *(__import *Func(char *)));
//
typedef char (__import * FType(char *));
FType Func;
//
typedef char *(__import * FType(char *));
FType Func;

////////
Func = (FType*)GetProcAddress(dll,"_myfunction");


Вобщем мне сей час ужасно лениво мыслить по поводу указателей (которые сутки работаю с PHP и ужасно хочу спать), но если копимлятор будет выдавать ошибки, то думаю разобраться будет несложно. Если тебе не к спеху, то дома гляну и тогда завтра отвечу. Удачи!
1.8K
14 мая 2005 года
Azaze1
102 / / 08.01.2005
Цитата:
Originally posted by Romik
Опять??? Ещё одни сутки я не выдержу. Всё хочу спать, ещё полчаса и еду домой (наконец-то!) :)
...
Вобщем мне сей час ужасно лениво мыслить по поводу указателей (которые сутки работаю с PHP и ужасно хочу спать), но если копимлятор будет выдавать ошибки, то думаю разобраться будет несложно. Если тебе не к спеху, то дома гляну и тогда завтра отвечу. Удачи!


Хм... Спасибо, за содействие, конечно, но лучше проспись и погляди дома... на твои строки сплошные глюки с указателями. Честно говоря, сейчас разбираться лень, итак башка уже трещит. Ещё полночи с базами данных возиться, завтра с парашютом прыгать, потом снова за машину... Так что в принципе можно сказать, что не к спеху. ;) Но хотелось бы довести до ума, так что "Жду!" =)

1.8K
15 мая 2005 года
Azaze1
102 / / 08.01.2005
Ещё раз хм... Тут уж из серии афоризмов "либо я дурак, либо лодка не едет". Пример для написания *.h файла к dll брал из Архангельского (будь он неладен :devil: ) один в один:
 
Код:
#ifndef _UMYDLL_H
=========
#define _UMYDLL_H
#ifdef __DLL
#define DLL_EI __declspec(dllexport)
#else
#define DLL_EI __declspec(dllimport)
#endif
=========

Почитал ваши посты, решил вдруг поменять dllexport на dllimport - всё заработало... Из этого вывод: не все приходящие ночью идеи бредовые. :P Всем спасибо за внимание, тревога отменяется. Вот теперь можно завтра (точнее уже сегодня) с чистой душой сигать с километра... :angel:
246
15 мая 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Azaze1
Почитал ваши посты, решил вдруг поменять dllexport на dllimport - всё заработало...


Так уж вдруг помогло?
В Dll д.б. dllexport(естественно), а в ехе dllimport(не менее естественно), что у Архангельского регулируетсяспомощью #define __DLL

 
Код:
]#ifndef _UMYDLL_H
=========
#define _UMYDLL_H
#ifdef __DLL      //определен, значит собираем dll подставляется dllexport
#define DLL_EI __declspec(dllexport)
#else             //иначе собираем ехе подставляется dllimport
#define DLL_EI __declspec(dllimport)
#endif
=========

т.е. если
Цитата:
Originally posted by Azaze1
Пример для написания *.h файла к dll брал из Архангельского (будь он неладен :devil: ) один в один


в проекте с dll надо вставить #define __DLL, а в ехе нет. Иначе dll просто думает, что Ты будешь импортировать myfunction из др. dll.

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