Главная страница
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.04 c
1-1105688775
SIG
2005-01-14 10:46
2005.01.30
Конвертация BLOB в Graphic


1-1105708010
про
2005-01-14 16:06
2005.01.30
Kak svernut programku pri pervom ejo zapuske???


3-1104225898
Tovarish Pronin
2004-12-28 12:24
2005.01.30
Как в DBGrid отобразить значения поля типа ftBytes?


3-1104231699
Dysan
2004-12-28 14:01
2005.01.30
не работает запрос при использовании параметров в ADO


14-1105190158
xman
2005-01-08 16:15
2005.01.30
Connect to Quake III Arena