1 | |||||||||||
GetProcAddress не может получить адрес ф-ии из dll08.04.2011, 21:56. Показов 5625. Ответов 15
Метки нет (Все метки)
Осваиваю написание dll, GetProcAddress не может получить адрес ф-ии из моей dllки? Где может быть засада? В экспоре ф-я вроде должна быть… поскольку…
код dll... все пишется на просто - Си.
0
|
08.04.2011, 21:56 | |
Ответы с готовыми решениями:
15
GetProcAddress не может найти функцию в dll не может получить адрес сетевой Win7 не может получить динамический ip-адрес Как получить адрес функции в DLL |
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
08.04.2011, 22:00 | 2 |
.def есть? может быть имена декорированы по-умолчанию - вообщем проверьте через dumpbin /exports - те проверьте, что в dll правда все нормально
1
|
08.04.2011, 23:04 [ТС] | 3 | |||||
Не по теме: Dump of file dlltest.dll 1 0 00001000 _Multiply@8 - это же она? и она в экспорт листе насколько я понял. Добавлено через 16 минут Подправил имя в программе заработало)
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
08.04.2011, 23:06 | 4 |
1) проверьте что возвращает GetLastError
2) для dll используется тот же компилятор? попробуйте в проекте dll создать def файл http://msdn.microsoft.com/en-u... s.80).aspx Добавлено через 55 секунд через .def либо через pragma - но не помню как, Рихтера почитать надо, но через def самое удобное
1
|
14 / 14 / 1
Регистрация: 04.04.2011
Сообщений: 70
|
|
08.04.2011, 23:15 | 5 |
не надо никаких дефов.
Просто подчеркивание при загрузке и все. @8 - Это тоже не надо. В спеках и туториалах русским по белому написано, что ввиду особенностей компилятора и стандарта имя предваряется символом "_"
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
08.04.2011, 23:19 | 6 |
wolf.diesel, пардон, если не путаю только в том случае когда ++ код вызывается в си, и потом декорация, то бишь @8 нужна для определения типов параметров
тут же для GetProcAddress важно лишь как оно в таблице экспорта выглядит
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
09.04.2011, 08:57 | 7 | |||||
Проблема в том, что это не Си.
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
09.04.2011, 13:09 | 8 |
Deviaphan, если код в ++ проекте, может там и так pureC?
к тому же от плюсов декорирование только в подчеркивании
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
09.04.2011, 13:13 | 9 |
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
09.04.2011, 13:30 | 10 |
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
09.04.2011, 13:35 | 11 |
Зато, в С++ есть.)
Можно делать "С++" внутри "С".) Не знаю зачем, но можно.
0
|
09.04.2011, 15:52 [ТС] | 12 |
использую пока вариант с .def с ним все нормально с именами, причем приходится "_declspec(dllexport)" убирать, а иначе студия - ругатцо и *def игнорит, способ добавления ф-й в таблицу экспотра похоже нужно выбирать какой-то один.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
09.04.2011, 16:00 | 13 |
1
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
09.04.2011, 16:17 | 14 | |||||
он предназначен для выполнения с++ го кода внутри си-кода, поэтому плюсовые функции объявляются как поддерживающие си
поэтому и пишут
1
|
09.04.2011, 18:00 [ТС] | 15 | |||||
сейчас попробовал *.def + extern _declspec(dllimport) имя вида - Multiply. и ругатся не стало, хотя недавно именно при совмещении этих двух способов студия игнорила EXPORTS в def'e - странно. еще попробовал только с *.def'ом...
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
09.04.2011, 18:43 | 16 |
Я имел в виду, что когда в С++ коде делается блок с функциями С, внутри него всё равно можно объявить С++ функции. Возможно, в новых компиляторах и внутри кода на С можно делать декорирование как в С++ (смысла не вижу, но вдруг). В общем, я код ТС плохо посмотрел.)
0
|
09.04.2011, 18:43 | |
09.04.2011, 18:43 | |
Помогаю со студенческими работами здесь
16
Получить имя и адрес DLL файла Загрузка переменной из DLL (GetProcAddress не берет значение переменной из *.dll) после заражения ноутбук не может получить адрес по DHCP Как получить адрес функции в dll стороннего процесса? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |