VBA ошибка при вызове библиотечной функции

Рейтинг: 0Ответов: 3Опубликовано: 15.05.2011

Доброго времени суток, уважаемые эксперты. У меня очередная проблема, в которой я надеюсь, вы поможете разобраться. Проблема такова: есть простенький класс (Delphi), конструктор класса зашит в динамическую библиотеку

type TSome = class
private
    fa, fb, fc:real;
published
    constructor Create(a,b,c:real);
end;

implementation

constructor TSome.Create(a,b,c:real);
begin
    fa:=a;
    fb:=b;
    fc:=c;
end;

теперь создается dll в которой есть экспортная функция с конструктором

library kindll;
uses
    SysUtils,
    Classes,
    kin;//это модуль с классом
    var Some:TSome;
    {$R *.res}

function InitSome(a,b,c:real):TSome;stdcall;
begin
    Some:=TSome.Create(a,b,c);
    result:=Some;
end;

exports InitSome;

begin
end.

и теперь функцию из библиотеки нужно заюзать из под VBA. Я попытался сделать это так:

Option Explicit
Declare Function InitSome Lib "kindll.dll" _
(ByVal a As Double, ByVal b As Double, ByVal c As Double) As Object

Sub Кнопка1_Щелчок()
    Dim kp As Object
    Set kp = InitSome(0, 0, 0)
End Sub

Что вызвало негодование в виде Память не может быть Read. Подскажите плиз что я не так делаю.

Добавлено.

Переписал:

type   
PSome=^TSome;   
TSome=class  
.............  
function InitSome(a,b,c:real):PSome;stdcall;   
begin   
    Some:=TSome.Create(a,b,c);   
    result^:=Some;   
end;

Все равно при вызове из под VBA бьет ошибку, но уже Память не может быть Written.

Ответы

Ответов пока нет.