Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как из DLL получить LIB файл для VS?  (Прочитано 15645 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 26-04-2006 02:26 » 

Если известен прототип функции которую нужно экспортировать
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 26-04-2006 08:48 » 

По моему, ты это уже спрашивал здесь: https://forum.shelek.ru/index.php/topic,3895.0.html

Там я тебе ответил смотреть инструкцию в https://forum.shelek.ru/index.php/topic,3621.0.html

Если это не помогает, тогда опиши затруднения.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 26-04-2006 09:09 » 

USBLexus, действительно непонятно - ты имеешь ввиду статически линкуемую библиотеку (насколько я знаю из ДЛЛ этого сделать нельзя), или просто интерфейс для сборки .h .lib .dll?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #3 : 27-04-2006 06:59 » 

По моему, ты это уже спрашивал здесь: https://forum.shelek.ru/index.php/topic,3895.0.html

Там я тебе ответил смотреть инструкцию в https://forum.shelek.ru/index.php/topic,3621.0.html

Если это не помогает, тогда опиши затруднения.

В общем написал def файл

//-----------------------------------------------------------------------
LIBRARY   1.dll

EXPORTS
    Decode @1
//-----------------------------------------------------------------------

Написал h файл
//-----------------------------------------------------------------------
extern "C" DWORD Decode(char* cIn, char* cOut);
//-----------------------------------------------------------------------
Подключил LIB к проекту.
Функция Decode не вызывается((
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #4 : 27-04-2006 07:07 » 

Если использовать такую запись
extern "C" DWORD WINAPI Decode(char* cIn, char* cOut);
то получаю ошибку error LNK2019: unresolved external symbol _Decode@8
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 27-04-2006 07:36 » 

Попробуй другие соглашения о вызовах. Возможно, длл скомпилирована с соглашением cdecl, хотя если в проекте у тебя такое же соглашение, то проблем быть не должно... И еще в хедере функцию объяви как __declspec(dllimport)

Код:
__declspec(dllimport) DWORD _cdecl Decode(char* cIn, char* cOut); 
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 27-04-2006 08:41 » 

Я вот так всегда делаю

#define MYEXPORT_API __declspec(dllexport)

extern "C"
{
DWORD Decode(char* cIn, char* cOut);
};

в .срр

MYEXPORT_API DWORD Decode(char* cIn, char* cOut)
{
...
}


и ещё, если ты в .NET то обязательно занеси имя ф-ции в .def файл.
« Последнее редактирование: 27-04-2006 08:42 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 27-04-2006 09:02 » 

Джон, так это же вроде при сборке Dll так делается, чтобы указать, что экспортировать будем. А в этом случае надо же импортировать и dll собрали без нас.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 27-04-2006 09:18 » new

Да точно, я такое делал при компиляции длл для динамической подгрузки. Жаль

Хм... USBLexus, а зачем тебе либ? Не проще ли сделать враппер для длл?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #9 : 02-05-2006 08:34 » 

Во, модификаторы поподменял заработало вроде))) Фуфф...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines