|
|
|
Вызов dll функции из dll написанной на С
|
|||
|---|---|---|---|
|
#18+
Подскажите как это проще всего реализовать. Функция будет вызыватса из длл написанной на делфи. Нашёл в интернете пару статей как это сделать, но они настолько запутанные что у меня ничего не получилось. Желательно если у кого есть пример. P.S. Желательно с большим количеством коментариев. Заранее благодарен за все советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2007, 12:59 |
|
||
|
Вызов dll функции из dll написанной на С
|
|||
|---|---|---|---|
|
#18+
Dima Yermak wrote: > Подскажите как это проще всего реализовать. Функция будет вызыватса из длл > написанной на делфи. Из *.dll, написанной на дельфи, нужно вызвать функцию *.dll, сделанной на C, я правильно понял? Тогда (если я правильно помню - это давно было :)) в проекте дельфийской *.dll нужно сделать модуль, где будут определения функций из C-шной *.dll. C-шные функции должны быть обьявлены в implementation как external. Типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. справку). Доп примеры можно посмотреть, например, в Windows.pas и OpenGLpas. Если нужно сделать наоборот - из C-шной *.dll вызвать функцию дельфийской *.dll, то можно, например, использовать LoadLibrary и GetProcAddress.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2007, 13:29 |
|
||
|
Вызов dll функции из dll написанной на С
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, но просто у меня уже мозг варитса. НОАДО НАОБОРОТ из сишной dll вызывать функцию из делфийской. Проблема в том что у меня нет опыта работы с си. Так что желательно полный пример использования LoadLibrary и GetProcAddress. Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2007, 13:43 |
|
||
|
Вызов dll функции из dll написанной на С
|
|||
|---|---|---|---|
|
#18+
Dima Yermak wrote: > Так что желательно полный пример использования LoadLibrary и > GetProcAddress. вот . За пять минут находится, плюс 100%я гарантия, что точно такой же имеется в дельфийской и сишной справке. ещё вариант (но уже посложнее :)) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Жутко выглядящая строчка "void (*myfunc)(DWORD arg)" объявляет указатель на функцию, а (void(*)(DWORD arg))GetProcAddress кастит возвращаемое GetProcAddress значение в указатель на функцию. (*myfunc)((DWORD)123) - собственно вызов функции. Указатель на функцию можно определить typedef'ом, тогда запись будет проще: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Далее, дельфйске функции надо будет приводить к сишным аналогом Так, напримр: "void func(DWORD arg);" это аналог дельфийского "procedure func(arg: DWORD); cdecl;" если у вас MSVC, то, скорее всего (синтаксис просто уже не помню) "void __stdcall func(DWORD arg);" будет аналогом "procedure func(arg: DWORD); stdcall)"; и т.д. Кроме того, ряд утилит (какие именно - не помню :) - дело давно было) генерят *.lib файлы, которые позволяют избежать прописывания GetProcAddress для каждой функции. Рекомедую почитать вот тут и вот тут . Потом опять же, ресурсы/примеры на эту тему легко гуглом находятся... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2007, 16:09 |
|
||
|
Вызов dll функции из dll написанной на С
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо. Получилось. Правда пришлось использовать явную загрузку DLL в связи с конкретной задачей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 11:54 |
|
||
|
Вызов dll функции из dll написанной на С
|
|||
|---|---|---|---|
|
#18+
И снова здравствуйте :) Появилась новая проблемка: не передаютса параметры в функцию в Delphi DLL функцию. Делаю следующим образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. соответсвенно функция которая вызываетса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. функция вызываетса как бы с пустыми параметрами. Подскажите пожалуйста как решить эту проблему. P.S. После таких изменений, после отработки (pAdd)("URL","LOGIN","PASSWORD","MENU_NAME"); выскакивает ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2028789]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 471ms |

| 0 / 0 |
