Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
ВнизРабота c сишными dll в Delphi Найти похожие ветки
← →
Danila_master © (2007-02-23 15:29) [0]Всем привет, подскажите, кто сможет где моя ошибка
Есть такая dll написанная на сях#include <windows.h>
extern "C" _declspec( dllexport )float testValue(float* mas);
float testValue(float* mas)
{
return mas[0];
}
И программка на дельфяхunit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TA = array of real;
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function testValue(mas: TA): real; external "CenterCalculation.dll";
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
s: TA;
begin
SetLength(s, 2);
s[0] := 2.5;
s[1] := 3.0;
ShowMessage("Test - " + FloatToStr (testValue(s)));
end;
end.
Результат выдает вообще левый 7,984....
В чем ошибка? или из дельфи нельзя посылать динамические массивы?
← →
Ega23 © (2007-02-23 16:13) [1]Сначала скажи, что такое _declspec. Если не знаешь, попробуй добавить после real; или cdecl; или stdcall;
function testValue(mas: TA): real; cdecl; external "CenterCalculation.dll";
илиfunction testValue(mas: TA): real; stdcall; external "CenterCalculation.dll";
← →
Danila_master © (2007-02-23 16:32) [2]Я точно не знаю, что значит _declspec, но эта форма была написана в книге.
С cdeclи stdcall пробовал, не помогает. Как я понимаю проблема в передаче динамического массива с делфи в библиотеку. Но в чем конкретно? Я не знаю. Хотя может я и не прав.
← →
Kostafey © (2007-02-24 02:05) [3]> _declspec
Все верно она должна быть.
> Как я понимаю проблема в передаче динамического массива
> с делфи в библиотеку
Тоже верно.
Вообще когда у меня возникла проблема передачи массива из С++ dll в Delphi exe мне пришлось копировать его содержимое, а
не работать с укзателями, предоставленными из dll.
Решение некрасивое, но работало без сбоев.
Как мне кажется, таких вещей стоит избегать и передавать либо простые типы или хотя бы массивы фиксированной длины.
Наверное можно и по-другому...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.054 c