|
|
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
Помогите решить задачку: Есть программа, написанная на паскале, исходников к ней нет. В ней предусмотрен динамический вызов из DLL функций вида Код: plaintext Вопрос: каким должен быть прототип данной функции на С++? Пробовал Код: plaintext Есть идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 16:18 |
|
||
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
smv2001ua "C" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 16:27 |
|
||
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
не понял, если можно поподробнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 16:31 |
|
||
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
smv2001uaне понял, если можно поподробнее :) попробуй убрать "С" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 16:34 |
|
||
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
smv2001ua Код: plaintext Пробовал Код: plaintext Для какого С/С++ компилятора? Borland C/C++ 5.* сработает такое: int __stdcall _export function(char * inParam, char * outParam, int outSize); для MS VC 6 надо писать по другому: int __stdcall __declspec(dllexport) function(char * inParam, char * outParam, int outSize); Не важно С или С++ код внутри функции будет. Для компиляторов других типов сходу не помню как надо писать. В начале, под виндами был придуман синтаксис типа: int __stdcall function(char * inParam, char * outParam, int outSize); внутри кода, а потом делался дополнительный Project.def файл в котором указываются какие именно функции должны быть экспортированы в dll. ---- Project.def LIBRARY Project.dll EXPORTS function = _function @1; --------------- То есть функцию _function экспортировать под именем function и расположить ее под номером 1 в списке экспорта. В общем, этот подход (через def) универсален и поддерживается всеми виндовыми компиляторами. Project.def скармливается конечно линкеру а не компилятору :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 17:49 |
|
||
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
White OwlДля какого С/С++ компилятора? Borland C/C++ 5.* сработает такое: int __stdcall _export function(char * inParam, char * outParam, int outSize); для MS VC 6 надо писать по другому: int __stdcall __declspec(dllexport) function(char * inParam, char * outParam, int outSize); для VC++ White OwlДля компиляторов других типов сходу не помню как надо писать. В начале, под виндами был придуман синтаксис типа: int __stdcall function(char * inParam, char * outParam, int outSize); внутри кода, а потом делался дополнительный Project.def файл в котором указываются какие именно функции должны быть экспортированы в dll. ---- Project.def LIBRARY Project.dll EXPORTS function = _function @1; --------------- То есть функцию _function экспортировать под именем function и расположить ее под номером 1 в списке экспорта. В общем, этот подход (через def) универсален и поддерживается всеми виндовыми компиляторами. Project.def скармливается конечно линкеру а не компилятору :) Странно, но на этапе линковки ругается на DEF файл, пишет что _function неизвестное имя... (unresolved external name) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 19:33 |
|
||
|
Стыковка DLL (C++) и программы на Delphi
|
|||
|---|---|---|---|
|
#18+
smv2001uaСтранно, но на этапе линковки ругается на DEF файл, пишет что _function неизвестное имя... (unresolved external name) Если в коде есть такое: int __stdcall __declspec(dllexport) function(char * inParam, char * outParam, int outSize) То def файл уже не нужен совсем. Либо: int function(char * inParam, char * outParam, int outSize) и Myproject.def ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 21:07 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33122799&tid=2033137]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 375ms |

| 0 / 0 |
