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

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

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

« : 08-06-2004 07:31 » new

Никто не  сталкивался с утилитами позволяющими открыть DLL и указв на функцию получить строку кода которая реализует импорта данонной функции  в различные языки ... интересует VC++ и VB?
Записан

Да да нет нет все остальное от лукавого.
npak
Команда клуба

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

« Ответ #1 : 08-06-2004 11:13 » 

Тебя интересует получить именно код?  Или сгенерировать import library?

Сначала надо извлечь информацию о расположении функций в DLL

dumpbin.exe /exports /out:some.dump some.dll

В файл some.dump попадёт информация об экспортируемых функциях библиотеки.  Из дампа надо написать some.def файл (руками или скриптом).

О формате .def файла см. MSDN.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_module.2d.definition_files.asp

Из .def файла генерируется библиотека загрузки

lib.exe /def:some.def /out:some.lib

some.lib и есть искомая библиотека
Записан

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

http://www.unitesk.com/ru/
Anonymous
Гость
« Ответ #2 : 08-06-2004 12:13 » 

нет меня интересует вот что :

Public Declare Function AbortPath Lib "gdi32" Alias "AbortPath" (ByVal hdc As Long) As Long

Это я взял из апививера  просто легко и удобно... но только для winapi   а я бы хотел  получать чтото похожее  для произвольной DLL ...
я понимаю что вытащить из класической  DLL   структуры нельзя но чтоб хотябы стандартные типы опозновались ...
Записан
npak
Команда клуба

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

« Ответ #3 : 08-06-2004 12:39 » 

Цитата: Anonymous
Public Declare Function AbortPath Lib "gdi32" Alias "AbortPath" (ByVal hdc As Long) As Long

Это я взял из апививера  просто легко и удобно... но только для winapi   а я бы хотел  получать чтото похожее  для произвольной DLL ...
я понимаю что вытащить из класической  DLL   структуры нельзя но чтоб хотябы стандартные типы опозновались ...


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

Для примера plus.dll
Код:
#include <windows.h>

BOOL WINAPI DllMain)
  HINSTANCE hinstDLL,  // handle to the DLL module
  DWORD fdwReason,     // reason for calling function
  LPVOID lpvReserved   // reserved
:
|
    return TRUE;
"


int WINAPI plus)int x, int y: | return x + y; "


Из бейсика функция plus цепляется (ручками Улыбаюсь )
Код:
Private Declare Function Plus Lib "c{\path_to\plus.dll" Alias "plus" )ByVal x As Long, ByVal y As Long: As Long


Узнать имена функций в dll можно при помощи dumpbin, типы аргументов из заголовочных файлов или документации.
Записан

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

http://www.unitesk.com/ru/
Anonymous
Гость
« Ответ #4 : 08-06-2004 15:28 » 

Значит только ручками и никак иначе?
Записан
npak
Команда клуба

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

« Ответ #5 : 08-06-2004 16:18 » 

Я полагаю, несложно на перле сваять программку, которая по .h будет строить базу вроде Win32Api.txt (которая используется в ApiViewer).
Записан

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

http://www.unitesk.com/ru/
Anonymous
Гость
« Ответ #6 : 09-06-2004 06:36 » 

А готовой нет? (незнаю я перла((( )
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines