C++ --> Delphi

Для тех, кто хочет сделать мир лучше.
Ответить
Сообщение
Автор
user
Нович0к
Нович0к
Сообщения: 25
Зарегистрирован: 13.12.2005

#1 Сообщение 04.04.2009, 19:26

Гуру кодинга подскажи как это оформить на дельфе

кусочки файла main.c

Код: Выделить всё

typedef int ( *ADL_MAIN_CONTROL_CREATE )(ADL_MAIN_MALLOC_CALLBACK, int );

...

void* __stdcall ADL_Main_Memory_Alloc ( int iSize )
{
    void* lpBuffer = malloc ( iSize );
    return lpBuffer;
}

...

    ADL_MAIN_CONTROL_CREATE          ADL_Main_Control_Create;

...

        ADL_Main_Control_Create = (ADL_MAIN_CONTROL_CREATE)GetProcAddress(hDLL,"ADL_Main_Control_Create");
        ADL_Main_Control_Create (ADL_Main_Memory_Alloc, 0);
файл main_s.h

Код: Выделить всё

#define __stdcall
typedef void* ( __stdcall *ADL_MAIN_MALLOC_CALLBACK )( int );
ADL_Main_Control_Create - функция находится в подключаемой dll-ке, которой нужно передать (функция_которая_выделяет_память_"ADL_Main_Memory_Alloc", 0)

туплю уже весь день. спасайте

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#2 Сообщение 04.04.2009, 19:43

Код: Выделить всё

type
  ADL_MAIN_CONTROL_CREATE_t = function(iSize: integer): Pointer;

function ADL_Main_Memory_Alloc(iSize: integer): Pointer; stdcall;
var
  lpBuffer: Pointer;
begin
  lpBuffer:=malloc(iSize);
  result:=lpBuffer;
end;

........
var
  ADL_Main_Control_Create: ADL_MAIN_CONTROL_CREATE_t;
........
 ADL_Main_Control_Create:=GetProcAddress(hDll, 'DL_Main_Control_Create');
 ADL_Main_Control_Create(ADL_Main_Memory_Alloc, 0);

Код: Выделить всё

type
  ADL_MAIN_MALLOC_CALLBACK_t = function(iSize: integer): Pointer; stdcall;
Вроде так :wink:
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Ответить