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

Вниз

Библиотека на C++ вызываемая из Delphi   Найти похожие ветки 

 
Ericon   (2005-01-13 12:24) [0]

Здравствуйте уважаемые. Киньте пожалуйста шаблон, как нужно объявлять функции в C++ библиотеке, чтобы ее можно было загрузить из Delphi как stdcall. Еще лучше код примитивной dll-ки экспортирующей хотя бы одну функцию. Спасибо.


 
DSKalugin ©   (2005-01-13 12:28) [1]

обычно объявляй. Нет никаких особенностей


 
Ericon   (2005-01-13 12:32) [2]

extern "C" __declspec(dllexport) char * MyFunction(char * Param);
В таком духе? Я C не знаю, поэтому могу чушь полную нести. Кинь пожалуйста пару строк, если не сложно.


 
Ericon   (2005-01-13 18:23) [3]

Если добавляю __stdcall, то изменяется имя экспортируемой функции... Совсем замучался...


 
VMcL ©   (2005-01-13 18:58) [4]

>>Ericon  (13.01.05 12:32) [2]

Я бы сделал как-то так:

char* __stdcall MyFunction(char* Param);
#pragma comment(linker, "/export:MyFunction=_MyFunction@4")


 
Suntechnic ©   (2005-01-13 19:04) [5]

Или пиши def файл, чтобы не мучаться с изменяемыми именами.


 
VMcL ©   (2005-01-13 19:06) [6]

Точнее так:

#ifdef __cplusplus
extern "C" {
#endif

char* __stdcall MyFunction(char* Param);
#pragma comment(linker, "/export:MyFunction=_MyFunction@4")

#ifdef __cplusplus
}
#endif


 
palva ©   (2005-01-13 19:49) [7]

Файл t1.cpp

extern "C" int _stdcall plusfun(int a, int b)
{
 return a+b;
}

Файл t1.def

exports
MyPlus=plusfun


Делаем dll, например, на Borland C/C++ 5.5

bcc32 -c -tWD t1.cpp
ilink32 -Tpd t1.obj c0d32.obj,,,cw32.lib import32.lib,t1.def


Главная программа:

function MyPlus(a,b:Integer): Integer; stdcall; external "t1.dll";
begin
 WriteLn(MyPlus(3, 4));
end.

Печатает 7


 
Ericon   (2005-01-13 22:48) [8]

Всем спасибо. Вопросов больше не имею.



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.031 c
1-1105918922
VAmpiru$
2005-01-17 02:42
2005.01.30
Как на паскале создать безразмерный файл?


1-1105931121
Добавить
2005-01-17 06:05
2005.01.30
Как преобразовать коды нажимаемых клавиш в слова и обратно ?


3-1104314918
Gemini
2004-12-29 13:08
2005.01.30
Как добавить драйвер MS SQL?


1-1105787946
Ilya___
2005-01-15 14:19
2005.01.30
ошибка: Invalid variant operation


6-1100588695
ИМХО
2004-11-16 10:04
2005.01.30
как работать с ящиками UNIX?