Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> проблема с Com в Dll при вызове из .net, Ошибка при подключении dll написанной на delphi к веб-сервису asp.net
two_2003
Вставить ник
сообщение 29:05:2007, 10:17
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 4
Регистрация: 29:05:2007
Пользователь №: 11 105



Репутация: - 0 +


При выполнении данного кода выскакивает исключение 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);
...
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 9)
sax_ol
Вставить ник
сообщение 29:05:2007, 10:40
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Для: two_2003
а если попробовать так (не уверен, но все-таки):
[DllImport("C:/Inetpub/wwwroot/WebSite_L-ju/App_Data/ole.dll", CallingConvention = CallingConvention.StdCall)]
?

а точно на той машине зарегестрирован компонент в системе?
Подняться вверх 
 
Сообщение #2
two_2003
Вставить ник
сообщение 29:05:2007, 12:15
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 4
Регистрация: 29:05:2007
Пользователь №: 11 105



Репутация: - 0 +


пробовали не помогает
а на счет того что объект зарегестрирован да он зарегистрирован, сам лично в реестре копался
Подняться вверх 
 
Сообщение #3
sax_ol
Вставить ник
сообщение 29:05:2007, 12:30
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Для: two_2003
хм ... ошибку полностью прочитать удалось?
что это за AMap3? к тому что - может он чегото хитрого требует, еще каких длл-ек или ... а в системе их нет или как вариант не находит

Сообщение отредактировал sax_ol - 29:05:2007, 12:31
Подняться вверх 
 
Сообщение #4
Barmutik
Вставить ник
сообщение 29:05:2007, 12:35
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 2 450
Регистрация: 27:05:2004
Из: Минск
Пользователь №: 561
Специализация: Delphi, RDBMS, C#



Репутация: - 8 +


А активный объект AMap3.Application точно есть в тот момент когда Вы к нему обращаетесь ?
Подняться вверх 
 
Сообщение #5
two_2003
Вставить ник
сообщение 29:05:2007, 15:46
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 4
Регистрация: 29:05:2007
Пользователь №: 11 105



Репутация: - 0 +


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

А по поводу вопроса <<что это за AMap3? к тому что - может он чегото хитрого требует, еще каких длл-ек или ... а в системе их нет или как вариант не находит>> скажу следующее, для этого объекта все есть, при подключении dll в delphi все же работает, а в .net не хочет, вот не знаю даж что и делать.
Подняться вверх 
 
Сообщение #6
Barmutik
Вставить ник
сообщение 29:05:2007, 15:48
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 2 450
Регистрация: 27:05:2004
Из: Минск
Пользователь №: 561
Специализация: Delphi, RDBMS, C#



Репутация: - 8 +


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

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

А какое дополнительное сообщение приходит в EOleSysError ?
Подняться вверх 
 
Сообщение #7
two_2003
Вставить ник
сообщение 29:05:2007, 16:25
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 4
Регистрация: 29:05:2007
Пользователь №: 11 105



Репутация: - 0 +


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

Ошибка даже происходит если использовать Appl:=CreateOleObject('AMap3.Application');
Подняться вверх 
 
Сообщение #8
sax_ol
Вставить ник
сообщение 29:05:2007, 16:37
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


пробуйте прочитать так
SysErrorMessage(GetLastError);
Подняться вверх 
 
Сообщение #9
Barmutik
Вставить ник
сообщение 30:05:2007, 04:37
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 2 450
Регистрация: 27:05:2004
Из: Минск
Пользователь №: 561
Специализация: Delphi, RDBMS, C#



Репутация: - 8 +


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

И хотелось бы всё таки увидеть что в сообщении в ошибке....
Подняться вверх 
 
Сообщение #10


Ответить  Новая тема 

 

RSS Текстовая версия Сейчас: 17:05:2008 - 05:23
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net
Проведение строительных работ, ремонт больниц, реконструкция офисов, реконструкция ремонт