Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Библиотека импорта, Как создать библиотеку импорта 
:(
    Опции темы
umator
Дата 26.8.2002, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.7.2002

Репутация: нет
Всего: нет



Как можно создать библиотеку импорта имея только DLL функции в которой имеют формат cdecl, т.е. имеют декорацию _Name, где Name - имя функции. Мне же необходимо получить библиотеку импорта в которой имена представлены в формате _Name@n где n - размер в байтах передаваемых параметров (формат __stdcall).

Спасибо!!!
PM MAIL WWW   Вверх
bavc
Дата 27.8.2002, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2002

Репутация: нет
Всего: нет



Не совсем понятно библиотека импорта это что?
PM MAIL WWW ICQ   Вверх
umator
Дата 27.8.2002, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.7.2002

Репутация: нет
Всего: нет



Библиотека импорта это lib-файл с описанием набора экспортируемых DLL функций. Необходим для связи одного исполнимого модуля с другим методом раннего связывания.
PM MAIL WWW   Вверх
bavc
Дата 27.8.2002, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2002

Репутация: нет
Всего: нет



Тогда не совсем понятно а зачем размер передаваемых байт
И стоит ли это того?
PM MAIL WWW ICQ   Вверх
bavc
Дата 27.8.2002, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2002

Репутация: нет
Всего: нет



В принципе мое мнение надо писать функцию которая ба вызывала это функции с dll
обявленную как __stdcall ....
Или я чтото не понял? Или чтобы она автоматически конвертила dll в lib
PM MAIL WWW ICQ   Вверх
umator
Дата 27.8.2002, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.7.2002

Репутация: нет
Всего: нет



У меня возникла естественная необходимость задействования функций из уже созданной сторонней DLL. Все функции данной DLL имеют формат обмена параметрами - stdcall имена принимают вид _Name@n где Name - имя функции, n - размер в байтах передаваемых в функцию параметров. Так вот проблема: мне не создать библиотеку импорта по данной DLL с именами функций в необходимом виде. Я пытался воспользоваться утилитами lib.exe (из Visual C++), implib.exe (из Builder C++). Они создают библиотеку где функции описаны в формате stdcall (пример: kernel32.lib). А пока её нет, то получается, что я не могу воспользоваться функциями из DLL в своей программе.
PM MAIL WWW   Вверх
bavc
Дата 27.8.2002, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2002

Репутация: нет
Всего: нет



А почему нет
в СРР помоему есть такая возможность вызывать длл функции напрямую
в одном файле пишешь свои функции со своими параметрами и требованиями из них и вызываеш длловские разве не так.
PM MAIL WWW ICQ   Вверх
umator
Дата 27.8.2002, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.7.2002

Репутация: нет
Всего: нет



Почитай, пожалуйста, повнимательнее о чём я говорю.
PM MAIL WWW   Вверх
umator
Дата 29.8.2002, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.7.2002

Репутация: нет
Всего: нет



Неужели никто кроме меня с этим не сталкивался?
PM MAIL WWW   Вверх
Geist
Дата 5.10.2002, 02:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет братец по несчастью. Могу ответить только на один твой вопрос: Я сталкивался с такой проблемой !!! Тоже бился и копался !!! Но мне очень кажется, что это большой глюк lib.exe, потому что в MSDN написано, что описывать экспортируемую функцию в def файле можно с указанием internalname так называемым внутренним именем. К примеру мне надо из ntdll.dll
достать функцию
extern "C" ... WINAPI ZwConnectPort(...)
Так вот я в def файле пишу
_ZwConnectPort@32 = ZwConnectPort
и как в МСДН пишут должно батрачить, но увы - глюк.
Копался я в структуре lib, но там лес дремучий, так что я в таких же потемках как и ты...
Если чтось узнаешь пиши сюда ответ, ладно ?
  Вверх
Grey
Дата 8.10.2002, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Можно написать dll которая будет оболочкой, и в ней сделать сделать функции для импорта cdecl. Вариант не самый простой, но все-таки это решение проблемы :)
PM MAIL   Вверх
dim
Дата 11.10.2002, 02:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вообще то это возможно. Получаем все эскпорты иэ dll:
dumpbin /exports out:mylib.def mydll.dll;
потом правим mylib.def так чтобы привести его к формату .def файла;
теперь генерим либу:
lib /def:mylib.def out:mylib.lib
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.