Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.014 c
14-73365
Alx2
2002-04-12 07:53
2002.05.23
Космонавтов - с прадником!


4-73471
TapaH
2002-03-23 19:49
2002.05.23
Помогите написать dll -


1-73232
Holms
2002-05-15 09:56
2002.05.23
Простой вопрос


6-73324
AlexeyVr
2002-03-10 09:15
2002.05.23
WebBrowser


1-73190
Иван
2002-05-13 01:20
2002.05.23
Как продублировать