Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.16;
Скачать: CL | DM;

Вниз

Как получить 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 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
15-1143026557
TStas
2006-03-22 14:22
2006.04.16
Всем, кого я знал - пока. Рад был познакомится


2-1143937599
except
2006-04-02 04:26
2006.04.16
ПРЕОБРАЗОВАТЬ String в array[0..128] of char !!!!


8-1131982179
WondeRu
2005-11-14 18:29
2006.04.16
Окно для FFT


15-1143130099
Pazitron_Brain
2006-03-23 19:08
2006.04.16
Идеальная субкультура.


15-1143620105
balepa
2006-03-29 12:15
2006.04.16
Нормально ли?