problem with DLL
получаю error loading type library.
что бы это могло быть?:-?
заранее спасибо
ну как?
Пока еще нормально. Убрал слово EXPORT. Компилятор просит не травит его COFF форматом.
шутишь, да?...
скопировала я
кинула еще раз
Пришло только один раз.
Вроде все нормально. exe модуль ищет dll-у. Отправляю h и lib обратно. Надеюсь получится с первого раза....
рассказывай что мне надо пошагово сделать.
1)создаю новый проект.
...
Ушло
пришло
рассказывай что мне надо пошагово сделать.
1)создаю новый проект.
...
1)создаю новый проект.
2)добавляется к проекту lib файл
3)в Unit*.h пишется #include "dse_api.h"
4)в Unit*.cpp
{
HDSECLNT hClnt = NULL;
if (DSE_Alloc(&hClnt) == DSE_RETCODE_OK)
{
ShowMessage("Hi!");
}
}
1)создаю новый проект.
2)добавляется к проекту lib файл
3)в Unit*.h пишется #include "dse_api.h"
4)в Unit*.cpp
{
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
А ТЕПЕРЬ ПОШЛО!!!!!!!!!!!!!!!!!!!!1:D :D :D :D :D :D :D :D
СПАСИБОЧКИ!!!!!!!!!!!!!!!!!!
Я ТЕБЯ ОБОЖАЮ!!!!!!!!!!!!!!!!!!!!111111
[Linker Error] Unresolved external 'DSE_Alloc' referenced from E:\IRA\EURO\REUTERS_DOCUMENTATION\SPUTNIK\SPUTNIK\B\UNIT1.OBJ
У тебя какой Builder? Может отправлю весь проект?
сорри. это я кое- что неправильно сделала....
А ТЕПЕРЬ ПОШЛО!!!!!!!!!!!!!!!!!!!!1:D :D :D :D :D :D :D :D
СПАСИБОЧКИ!!!!!!!!!!!!!!!!!!
Я ТЕБЯ ОБОЖАЮ!!!!!!!!!!!!!!!!!!!!111111
Thanks ;). Но после таких слов я наверно не засну :)
У тебя какой Builder? Может отправлю весь проект?
ПОШЛО!!!!!!!!!!!!!!!!!
БОЖЕ КАКАЯ РАДОСТЬ!!!!!!!!!
А ЧТО ТЫ СДЕЛАЛ?
1. Наша тема заняла первое место по длинне за год.
2. У меня подключилась длл-ка( что и требовалось)
3. Mongoose - лучший друг всех времен и народов(однако огромное спасибо всем, кто принимал участие, в осбенноси Romik-у)
4. что сделал Mongoose (лучший друг всех времен и народов), я думаю он еще напишет.
5. у меня поменялся статус с Новичка на Бывалого.
Вывод:
чайники, типа меня, побольше обращайтесь за помощью в форумы, это полезно, как показывает практика.
ИТОГО:
4. что сделал Mongoose (лучший друг всех времен и народов), я думаю он еще напишет.
1.Удалил слова EXPORTS из h-файла.
2. coff2omf TLXExportAPI.lib TLXExportAPI2.lib
3. удалил старый TLXExportAPI.lib и переименвал TLXExportAPI2.lib в TLXExportAPI.lib
...
Но теперь уже серьезно споки... ;)
1.Удалил слова EXPORTS из h-файла.
2. coff2omf TLXExportAPI.lib TLXExportAPI2.lib
3. удалил старый TLXExportAPI.lib и переименвал TLXExportAPI2.lib в TLXExportAPI.lib
...
Но теперь уже серьезно споки... ;)
Да... дядя, всё же твоя мысль оказалась верной, по поводу того что функция ничего не возвращает :) Интересно, а в коментариях заголовочного файла указано какого он века? :) Итого, нетревиальным в данном топике оказалось обнаружить факт того, что ф-ии невозвратные и удалить неверное определение EXPORT. Сэр, надо отдать вам должное - продержались до победного. Страна не забудет своих героев ;)
Тоже небольшая проблема с dll.
Сооружаю свою dll, там простенькая функция, принимает и возвращает char*. Собираю проект - получается dll, всё путём. Динамическое присоединение полученной dll к любому из проектов
идёт на ура, а вот пытаюсь получить указатель на функцию методом
Func = (FType*)GetProcAddress(dll,"_myfunction");
указатель Func оказывается пустым. Т.е. вроде как и функции такой в библиотеке нет. Всё проверял несколько раз, имена и входные параметры везде совпадают.
/*
HINSTANCE dll;
typedef char (__import * FType(char *));
FType * Func;
*/
В чём может быть проблема, не подскажете?
Прива! =)
Тоже небольшая проблема с dll.
Сооружаю свою dll, там простенькая функция, принимает и возвращает char*. Собираю проект - получается dll, всё путём. Динамическое присоединение полученной dll к любому из проектов
идёт на ура, а вот пытаюсь получить указатель на функцию методом
Func = (FType*)GetProcAddress(dll,"_myfunction");
указатель Func оказывается пустым. Т.е. вроде как и функции такой в библиотеке нет. Всё проверял несколько раз, имена и входные параметры везде совпадают.
/*
HINSTANCE dll;
typedef char (__import * FType(char *));
FType * Func;
*/
В чём может быть проблема, не подскажете?
Опять??? Ещё одни сутки я не выдержу. Всё хочу спать, ещё полчаса и еду домой (наконец-то!) :)
Кажется делать нужно так(пишу по памяти):
(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 и ужасно хочу спать), но если копимлятор будет выдавать ошибки, то думаю разобраться будет несложно. Если тебе не к спеху, то дома гляну и тогда завтра отвечу. Удачи!
Опять??? Ещё одни сутки я не выдержу. Всё хочу спать, ещё полчаса и еду домой (наконец-то!) :)
...
Вобщем мне сей час ужасно лениво мыслить по поводу указателей (которые сутки работаю с PHP и ужасно хочу спать), но если копимлятор будет выдавать ошибки, то думаю разобраться будет несложно. Если тебе не к спеху, то дома гляну и тогда завтра отвечу. Удачи!
Хм... Спасибо, за содействие, конечно, но лучше проспись и погляди дома... на твои строки сплошные глюки с указателями. Честно говоря, сейчас разбираться лень, итак башка уже трещит. Ещё полночи с базами данных возиться, завтра с парашютом прыгать, потом снова за машину... Так что в принципе можно сказать, что не к спеху. ;) Но хотелось бы довести до ума, так что "Жду!" =)
=========
#define _UMYDLL_H
#ifdef __DLL
#define DLL_EI __declspec(dllexport)
#else
#define DLL_EI __declspec(dllimport)
#endif
=========
Почитал ваши посты, решил вдруг поменять dllexport на dllimport - всё заработало... Из этого вывод: не все приходящие ночью идеи бредовые. :P Всем спасибо за внимание, тревога отменяется. Вот теперь можно завтра (точнее уже сегодня) с чистой душой сигать с километра... :angel:
Почитал ваши посты, решил вдруг поменять dllexport на dllimport - всё заработало...
Так уж вдруг помогло?
В Dll д.б. dllexport(естественно), а в ехе dllimport(не менее естественно), что у Архангельского регулируетсяспомощью #define __DLL
=========
#define _UMYDLL_H
#ifdef __DLL //определен, значит собираем dll подставляется dllexport
#define DLL_EI __declspec(dllexport)
#else //иначе собираем ехе подставляется dllimport
#define DLL_EI __declspec(dllimport)
#endif
=========
т.е. если
Пример для написания *.h файла к dll брал из Архангельского (будь он неладен :devil: ) один в один
в проекте с dll надо вставить #define __DLL, а в ехе нет. Иначе dll просто думает, что Ты будешь импортировать myfunction из др. dll.