Вниз
Скачать: CL | DM;

dll на c++   Найти похожие ветки 

← →
dimmu2   (2002-05-05 14:39) [0]

Добрый день, уважаемые Мастера! У меня ест довольно интересный вопрос по программированию dll и я искренне надеюсь получить на него ответ.
Дело обстоит следующим образом: необходимо написать dll на C++ и экспортировать из нее функции/процедуры в приложение на delphi.
Я написал несколько вариантов и все, что мне удалось – сообщение о невозможности найти точку входа используемой процедуры в dll. Я уже писал dll на delphi и в приложениях, опять же, на delphi их получалось вызывать без проблем. Понятно, что dll для того и созданы, чтобы писать их на другом языке, нежели основное приложение. Во-первых, о вызове функций – я использовал неявный вызов (вообще-то можно было бы использовать и явный вызов, но для того, чтобы освоить методику, я думаю и неявный вызов подойдет). Значит, вызываю функцию я следующим образом:


function sum(a,b: integer): integer; cdecl; external ‘test.dll’;


Я надеюсь, что здесь все без ошибок, и можно перейти к основной части – код в dll – потому что, как мне кажется вся проблема именно в нем. Я пишу dll в VC6; первую процедуру он создает сам, вторая моя, вот код dll:


#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

__declspec(dllexport) int __cdecl sum(int a,int b){
return (a+b);
}



Короче говоря, чего здесь не хватает?


← →
~Sergius   (2002-05-05 19:29) [1]

имхо, процедуру в си лучше объявлять как pascal, уже как минимум одна проблема минус (с порядком описания параметров). Попробуй, может подойдёт. В виндовс апи так подавляющее большинство функций описано


← →
ghost_by ©   (2002-05-05 21:58) [2]

С++ изменяет имя функции путем добавления в конец имени информации о результате функции и входных параметрах.
Попробуй так:

extern "C"{
int __cdecl sum(int a,int b);
};

__declspec(dllexport) int __cdecl sum(int a,int b){
return (a+b);
}


Должно работать.


← →
dimmu2   (2002-05-06 07:26) [3]

Спаибо, действаительно все работает!



← →
s@shka   (2002-05-10 16:08) [4]

HELP А как добиться работы в обратном порядке. То есть dll написанную на Дельфях запихнуть в С



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.009 c
1-73314
Serhy
2002-05-12 03:31
2002.05.23
Из 8.3 в норму


1-73266
Sniffer
2002-05-10 01:04
2002.05.23
Классы


1-73276
vitnt2000
2002-05-08 07:46
2002.05.23
Добавление серий в Chart


3-73044
sanilo
2002-04-26 15:00
2002.05.23
Fast report


1-73224
Как сделать?
2002-05-14 18:36
2002.05.23
Как сохранить из StringGrid в текстовый файл




   Наверх