Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Вниз

Как получить Handle статически (LIB) загружаемой DLL?   Найти похожие ветки 

 
Vlad2   (2006-01-26 18:12) [0]

Имя импортируемой функции - переменная. Чтобы обращаться к ней через GetProcAddress, нужен Handle. GetModuleHandle не работает. При динамической загрузке проблем не возникает.

Как при статической загрузке DLL обратиться к функции, не описывая её имени в виде идентификатора?
Спасибо.


 
Игорь Шевченко ©   (2006-01-26 18:16) [1]


> GetModuleHandle не работает


Работает


 
Vlad2   (2006-01-26 18:39) [2]

Что-то у меня не получается. Если использую LoadLibrary - нет проблем, а если подлинковываю соответствующий LIB, то хэндл остаётся нулём.


 
Игорь Шевченко ©   (2006-01-26 18:50) [3]

GetModuleHandle ("kernel32.dll") работает. Эта DLL статически линкуется. Может, надо путь убрать из имени ?


 
Vlad2   (2006-01-26 18:56) [4]

Там без пути, голое имя, фйл *.dll в текущей директории, а GetLastError всё равно говорит ""Не найден указанный модуль" :((.


 
Игорь Шевченко ©   (2006-01-26 19:04) [5]

Vlad2   (26.01.06 18:56) [4]

Код в студию не затруднит ? И заодно часть вывода Tdump


 
Vlad2   (2006-01-26 19:35) [6]

Спасибо, Игорь,

к сожалению, затруднит. Начал работать в Borland Developer Studio 2006, да ещё под С++Builder. На соответствующих форумах - молчание, а на этом (пожалуй, лучшем) не раз находил ответы, да и сам тоже отвечал.

В проект добавляю LIB, созданный одновременно с DLL. И всё. А потом по ходу программы в любом месте обращаюсь к GetModuleHandle. Обидно, что только вчера это работало, а сегодня создал с нуля новый проект с этими же модулями, и никак. Почему не может найти то, что есть?

А какая часть вывода Tdump может помочь?


 
Игорь Шевченко ©   (2006-01-27 11:35) [7]

Vlad2   (26.01.06 19:35) [6]


> А какая часть вывода Tdump может помочь?


Раздел Exports, относящийся к интересующей DLL


> . Обидно, что только вчера это работало


Значит, все-таки дело не в GetModuleHandle, а в чем-то еще.

Я бы убедился, что DLL с нужным именем присутствует в разделе Exports вывода TDump, затем убедился бы, что в GetModuleHandle передается именно то имя, которое присутствует в Exports


 
Vlad2   (2006-01-27 13:26) [8]

Спасибо за внимание и помощь, Игорь!

Вчера, помучавшись экспериментами с опциями проекта, установил, что GetModuleHandle работает только тогда, когда в проект включены все пакаджи, независимо от того, нужны они тебе или нет. Т.е., BDS 2006 ещё сырой, несмотря на установленный SP1 - одним словом - превью он и есть превью, натыкался уже и на другие дефекты. Думаю (проверять уже некогда), под старой версией этой ошибки не было бы. У меня все имена DLL (включая раздел Exports вывода TDump) совпадают.

Благодарен за отклик. Успехов!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
2-1144151406
Валнетин
2006-04-04 15:50
2006.04.16
MDIChild


3-1140468749
-Антон-
2006-02-20 23:52
2006.04.16
EHLib Rus Help


6-1136402386
Jenya
2006-01-04 22:19
2006.04.16
Как в Delphi 7.0 отправить письмо на E-mail?


15-1142587310
Juice
2006-03-17 12:21
2006.04.16
Средство Контроля Версий. Выбор версионника.


2-1143777257
_kos_
2006-03-31 07:54
2006.04.16
Список юзеров на IdIRC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский