Страница: 1 | 2 |
Вопрос: Can't find DLL entry point ... in ",,,,, .dll
Добавлено: 24.12.05 15:53
Автор вопроса: Surok
Не ругайте за то что много уже раз кто-то кому-то разжевывал этот вопрос...Поиск по форуму глючит у меня..
значит..так..
АctiveX Dll-ки регистрируются и подключаются к прожекту - норм, знаем..
DLL - ки которые не ActiveX..их как?
Дали мне dll на Дельфях написанную...и как ее контачить?
Не региться и а функции декларируешь - кричит Can't find DLL entry point ... in ",,,,, .dll"..
Так вот...И что это за такая контрольная точка?
Ну, допустим узнаю я ее..как мне это поможет?
Как использовать ее в приложении штобы дллку взять за рога?
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 24.12.05 16:03
Поинтересуйся у того, кто дал, указаны функции на экспорт или нет. И какое соглашение вызова.
Номер ответа: 2
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #2
Добавлено: 24.12.05 17:13
В Win\System скопируй и попробуй: regsvr32 ..dll
Если я правильно понял траблу.
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 24.12.05 17:54
«UL.exe»
Ты неправильно понял "траблу". Вопрос ещё раз почитай.
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 25.12.05 01:55
ну соглашение все-же там stdcall, имхо, а вот функции их декларации и ипользование спросить кешно прийдется
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 25.12.05 23:54
Если это нормальная dll, то почему у неё точки входа нет и как с этим бороться? Заодно спроси у того, кто на Дельфи писал, что за dll он компилировал?
Номер ответа: 6
Автор ответа:
Surok
Вопросов: 36
Ответов: 106
Профиль | | #6
Добавлено: 26.12.05 04:15
Нутро дллки я знаю...иначе как бы я пытался бы декларировать..
Как с ошибкой быть?
>> mc-black Нормальная дллка..? либо активХ либо stdcall..какие еще существуют?
точка входа -- это, я так понимаю, какоето смещение в самой дллки..и как ее узнать и использовать...
Номер ответа: 7
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #7
Добавлено: 26.12.05 06:30
мне тут пару месяцев назад гуру написали ДЛЛ на СИ, дак она совсем и не требует регистрации.
Регистрации требуют ActiveX-DLL, иначе из них функций не вытащишь. А на СИ без регистрации работает.
Номер ответа: 8
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #8
Добавлено: 26.12.05 09:24
Surok
Точка входа - это адрес DllMain, винда сама её вызывает, когда dll загружается.
Если под точкой входа подразумевается точка входа в конкретную процедуру, то получается она вызовом GetProcAddress (предварительно нужно загрузить dll при помощи LoadLibrary)
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 26.12.05 10:27
Ты хотя бы открой библу в Dependency Walker'е и погляди какие функции она экспортирует и под какими именами. А там уже эксперементируй с параметрами.
Номер ответа: 10
Автор ответа:
Surok
Вопросов: 36
Ответов: 106
Профиль | | #10
Добавлено: 27.12.05 20:12
Спасибо всем...трабла разрешилась..ошибка возникала из-за того что декларировась функция которой не существовало, поскольку произошла ошибка в системе человек-человек и нутро дллки описано мне было не правильно...
но появилась другая, очень важная трабла:
вызываемые функции Дельфиновской дллки возвращают значения как надо...
А вот принимать в качестве аргумента что-либо вне зависимости от типа не хотят..
С тем челом, который эту дллку делал, зависли с этой багой...перепробовали уже все возможные типы..
самый простой пример: в дллке - функция , которой из VB передаеться число типа Long...функция показывает сообщение с этим числом и возвращает его...так вот что не подсунь, а возвращает одно и тоже число...
какая то недружба VB-Delfi...
Номер ответа: 11
Автор ответа:
Surok
Вопросов: 36
Ответов: 106
Профиль | | #11
Добавлено: 27.12.05 20:21
to HOOLIGAN
попутно рождаеться вопрос..
GetProcAddress как пользоваться функцией?
возможно ли, скажем, если в папку заранее подготовленную кинули дллку stdcall определить ее точку входа и использовать остальные ее функции..и без перекомпиляции проекта?
то есть механизм типа плагинов...
или возможен более удобный способ?
Номер ответа: 12
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #12
Добавлено: 27.12.05 21:09
а возвращает одно и тоже число...
Саму dll можно посмотреть?
Если знаешь имена и количество параметров экспортируемых ф-ций, то можно на лету грузить dll и вызывать функции. Примерно так:
On Error Resume Next
Dim lb As Long, pa As Long
'map 'user32' into the address space of the calling process.
lb = LoadLibrary("user32"
'retrieve the address of 'SetWindowTextA'
pa = GetProcAddress(lb, "SetWindowTextA"
'Call the SetWindowTextA-function
CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
'unmap the library's address
FreeLibrary lb
End Sub
P.S.
Купи себе API-Viewer
Номер ответа: 13
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #13
Добавлено: 28.12.05 00:36
А ошибки Bad Dll Calling Convention случайно не возникает ли? Надо в объявлении дельфийской функции аписать
Или можно SafeCall.
Номер ответа: 14
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #14
Добавлено: 28.12.05 12:25
Совет тут один - брать за воротник того кто эту dll писал. Больше тебе никто не поможет.
Ну а если человек сам не знает, какие функции и с какими параметрами он впихнул в свою dll-ку - попроси написать её кого-нить другого )
Номер ответа: 15
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #15
Добавлено: 28.12.05 12:41
ошибка в системе человек-человек ?
У одного есть VB, у другого - Delphi
Надо чтобы хотя бы у одного были оба инструмента - для создания и для тестирования dll.