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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка DLL с явной компоновкой, библиотека не грузится 
:(
    Опции темы
_hunter
  Дата 23.1.2004, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



загрузить пытаюсь так:
Код
     HINSTANCE DLL_Handle = LoadLibrary("C:\\dll1.dll");
     if (DLL_Handle != 0)
       AutoProc = (HOOKPROC)GetProcAddress(DLL1_Handle, "AutoProc");
       if (AutoProc != 0){
          //
       }

А на GetProcAddress говорит нет такой процедуры sad.gif
хотя dump пишет:
Exports from DLL1.dll
2 exported name(s), 2 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
00001674 1 0000 AutoProc(int, unsigned int, long)
0001D0F8 2 0001 ___CPPdebugHook

что не правильно?

Заранее благодарю за ответ.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.DUDA
Дата 23.1.2004, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Неправильно скорее всего то, что в GetProcAddress нужно передавать полное имя ф-ции (сгенерированное компилятором, с закодированными типами и кол-вом параметров), типа "?MsgHookProc@@YGJHIJ@Z". А то, что показывает dump (интересно, какой dump ? dumpbin что ли ?) - это расшифрованные имена. Можно воспользоваться утилитой depends.exe


--------------------
user posted image
PM MAIL WWW   Вверх
shedon
Дата 23.1.2004, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
Неправильно скорее всего то, что в GetProcAddress нужно передавать полное имя ф-ции (сгенерированное компилятором, с закодированными типами и кол-вом параметров), типа "?MsgHookProc@@YGJHIJ@Z".

Первый раз такое слышу, всегда передавал нормальное имя и всё работало.
Скорее ошибка где-то в самой длл, как там экспортирутся функция !?

Это сообщение отредактировал(а) shedon - 23.1.2004, 21:48


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
_hunter
Дата 23.1.2004, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



так объявляю:
__declspec(dllexport) void AutoProc(){
//
}


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
<Spawn>
Дата 23.1.2004, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Если есть Borland Delphi, то можешь посмотреть секцию экспорта ДЛЛ при помощи TDump.exe.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
shedon
Дата 24.1.2004, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



А я не понял в дампе у тебя написанно AutoProc(int, unsigned int, long), а объявляешь так void AutoProc(); От куда там эти параметры взялись ?
А в *.def файле, что нить есть ?


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 24.1.2004, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата
__declspec(dllexport) void AutoProc(){

Вот имя такой функции компилер (если это VC++) и закодирует, т.к. где здесь модификатор "C" ?


--------------------
user posted image
PM MAIL WWW   Вверх
_hunter
Дата 24.1.2004, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



а .def файла у меня нету...
его как создать?

у меня Builder


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
shedon
Дата 24.1.2004, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

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



Цитата
а .def файла у меня нету...

def файл создавать не обязательно,
Цитата
так объявляю:
__declspec(dllexport) void AutoProc(){
//
}

Это реализация. А где объявление самой функции AutoProc ?
И ещё раз посмотри, почему в дампе у функции появляются параметры, и я не знаю как в бюлдере, но в VC есть некоторые функции имена которых нельзя использовать.


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
_hunter
Дата 24.1.2004, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



дык это у меня и объявление и реализация (или они отдельно идти должны?)
а в дампе параметры появляются так как у меня функция с ними (просто для сокращения о них не писал)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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