Программа на Delphi и Dll на C
От: B0BAH  
Дата: 17.07.03 12:42
Оценка:
Есть сабж. Я делаю следующее:
Кусок Dll на Си:


#include "math.h"

extern "C" __declspec(dllexport) void trans(float* ptr,int ik,int jk,float* pRez){
    //Транспонирование матрицы
    for(int i=0; i<ik;i++){
        for(int j=0;j<jk;j++){
            *(pRez+i+j*ik)=*(ptr+j+i*jk);
        }
    }
}


Есть ещё файл math.h:

#ifndef _MATH_H_
#define _MATH_H_  

extern "C" __declspec(dllexport) void trans(float* ptr,int ik,int jk,float* pRez);

#endif


Всё прекрасно компилируется и работает (если программа на си).

Нужно программу на Дельфи. Пишу:

procedure TForm1.FormCreate(Sender: TObject);
var
  hDll:THandle;
  trans:procedure(ptr:pointer;ik,jk:integer;var pRez:pointer); stdcall;
  mass:array of array of single;
  rez:array of array of single;
begin
hDll:=LoadLibrary('math_dll.dll');
  if hDll<>0 then
  begin
    @trans:=GetProcAddress(hDll,'trans');
    if Assigned(@trans)=false then
      ShowMessage('Функция trans не найдена!');
  SetLength(mass,5,5);
  SetLength(rez,5,5);
  //Заполняем здесь массив случайными числами (здесь ошибки быть не может :))
  trans(@mass[0,0],5,5,@rez[0,0]);



Итак далее...
Короче не работает, с этой функцией вообще не компилируется, пишет Types of actual and formal parametrs must be identical, с другими функциями компилируется но Access violation! Функция загружается нормально. Что не правильно? И каким образом ещё можно в программе на Delphi загрузить Dll написанную на C???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.