компиляция DLL из IDL
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 216
- Зарегистрирован: 25 апр 2006, 12:05
- Откуда: г.Ростов-на-Дону
- Контактная информация:
компиляция DLL из IDL
добрый день!
получил IDL файл отдал его mild.exe
получил
dlldata.c
FULL.h
FULL_i.c
FULL_p.c
FULL.tlb
ручками создал файл FULL.def
А теперь немогу продвинутся дальше незнаю как откомпилить с С++ некогда не работал... помогите пожалуйста!
получил IDL файл отдал его mild.exe
получил
dlldata.c
FULL.h
FULL_i.c
FULL_p.c
FULL.tlb
ручками создал файл FULL.def
А теперь немогу продвинутся дальше незнаю как откомпилить с С++ некогда не работал... помогите пожалуйста!
-
- Местный житель
- Сообщения: 216
- Зарегистрирован: 25 апр 2006, 12:05
- Откуда: г.Ростов-на-Дону
- Контактная информация:
вообщем цель такая нужно через OLE обратится к собственному VIPINTERFACE... через LoadVip чтоб можно было использовать его функции и процедуры... при помощи которых будут туда и обратно гонятся данные... Вообщем вот так... на сколько я понил из доки нудно сделать эту dll и зарегистрировать в винде...
я побывал пример из доки
Нечего не вышло умирает вот здесь
я побывал пример из доки
Код: Выделить всё
Dim GalApp As Variant, Iface As Variant
Set GalApp = CreateObject("GalNet.App")
IFace = GalApp.LoadVip("MyVip")
if (IFace Is Nothing) then
MsgBox "Функции API не реализованы"
Exit Sub
end if
Код: Выделить всё
IFace = GalApp.LoadVip("MyVip")
Rut-time error '438':
Object doesn't support this property or method
-
- Местный житель
- Сообщения: 216
- Зарегистрирован: 25 апр 2006, 12:05
- Откуда: г.Ростов-на-Дону
- Контактная информация:
galover
Вот пробую твой пример
IAtlantisAppSrv pIAtlantisApp = new AtlantisApplicationComponentClass();
Вот пробую твой пример
умирает вот здесьВот сам vip
Код:
//IUsers.vih
#component "Utils"
objInterface IUsers;
public procedure SendMessageToActiveUsers(msg : string);
end;
vipInterface Users implements IUsers;
// Users.vip
#include IUsers.vih
#component "Utils"
interface Users;
create view
as select
Sessions.SessionId
from
x$ActiveUsers Sessions;
public procedure SendMessageToActiveUsers(msg : string);
{
_loop Sessions
{
SendMessageToSession(Sessions.SessionID, msg);
}
}
end.
Компилим, подключаем. Получаем COM wrapper (сделал по аналогии с примером для web сервисов, сначала atlidl.exe натравляем на res получаем idl файл, который скармливаем midl.exe...).
C#
Код:
using System;
using AtlantisComDrvLib;
using UTILSLib;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
IAtlantisAppSrv pIAtlantisApp = new AtlantisApplicationComponentClass();
pIAtlantisApp.Connect("GalUser", "Password");
var ss = (IUsers)pIAtlantisApp.LoadVip("Utils::Users");
ss.SendMessageToActiveUsers("Всем выйти из Галактики!");
GC.Collect();
GC.SuppressFinalize(pIAtlantisApp);
GC.Collect();
}
}
}
IAtlantisAppSrv pIAtlantisApp = new AtlantisApplicationComponentClass();