Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c