проблема с Com в Dll при вызове из .net

Тема в разделе "Delphi - СОМ", создана пользователем two_2003, 29 май 2007.

Статус темы:
Закрыта.
  1. two_2003

    two_2003 Гость

    При выполнении данного кода выскакивает исключение EOleSysError.
    Может мы подключаем dll неправильно, а может в dll что то не так(отдельно dll подключали в delphi и тестили - все работает)

    код в dll
    library ole;
    uses
    SysUtils,
    ComObj,
    OleCtrls,
    ActiveX;
    {$R *.res}
    function GetPoint(xy: Integer): integer; stdcall;
    var
    ...
    begin
    ....
    try
    CoInitialize(nil);
    except
    result:=-5; exit; end;

    try
    Appl:=GetActiveOleObject('AMap3.Application');
    except
    on EOleCtrlError do
    begin result:=- 61; exit; end;
    on EOleException do
    begin result:=-63; exit; end;
    on EOleRegistrationError do
    begin result:=-64; exit; end;
    on EOleSysError do
    begin result:=-65; exit; end;
    on EOleError do
    begin result:=-62; exit; end;
    ....
    try
    CoUnInitialize;
    except result:=-23; exit; end;
    end;

    exports
    GetPoint;

    begin
    end.


    код в веб-сервисе
    ...
    public class MapPoint
    {
    [DllImport("C:/Inetpub/wwwroot/WebSite_L-ju/App_Data/ole.dll")]
    public static extern int GetPoint(int xy);
    }
    ...
    int x = MapPoint.GetPoint(1);
    ...
     
  2. two_2003

    two_2003 Гость

    пробовали не помогает
    а на счет того что объект зарегестрирован да он зарегистрирован, сам лично в реестре копался
     
  3. Barmutik

    Barmutik Гость

    А активный объект AMap3.Application точно есть в тот момент когда Вы к нему обращаетесь ?
     
  4. two_2003

    two_2003 Гость

    Да есть, и он даже зарегистрирован в системе,
    Вот проверка
    on EOleRegistrationError do
    begin
    result:=-64;
    exit;
    end;
    Эта ошибка не выскакивает.
    Еще предложения....

    А по поводу вопроса <<что это за AMap3? к тому что - может он чегото хитрого требует, еще каких длл-ек или ... а в системе их нет или как вариант не находит>> скажу следующее, для этого объекта все есть, при подключении dll в delphi все же работает, а в .net не хочет, вот не знаю даж что и делать.
     
  5. Barmutik

    Barmutik Гость

    Вообще-то .. я не то имел ввиду ..

    EOleSysError - вывалиться при вызове GetActiveOleObject если на текущий момент нет запущенного(активного) объекта AMap3.Application ...

    А какое дополнительное сообщение приходит в EOleSysError ?
     
  6. two_2003

    two_2003 Гость

    никакого сообщения не выводит, если убрать on EOleSysError do то ничего не происходит далее код

    Ошибка даже происходит если использовать Appl:=CreateOleObject('AMap3.Application');
     
  7. Barmutik

    Barmutik Гость

    Т.е. из обычного Дельфийского или СиШарпного приложения вызывается нормально .. а из веб сервиса нет?

    И хотелось бы всё таки увидеть что в сообщении в ошибке....
     
Загрузка...
Похожие Темы - проблема Com Dll
  1. Allegro
    Ответов:
    1
    Просмотров:
    2.080
  2. AgniXRudra
    Ответов:
    2
    Просмотров:
    54
  3. Zloikaktus
    Ответов:
    0
    Просмотров:
    31
  4. c0de3r
    Ответов:
    5
    Просмотров:
    153
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    160
Статус темы:
Закрыта.

Поделиться этой страницей