Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Com - сервер и C# 
:(
    Опции темы
m9yt
Дата 21.6.2012, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Привет всем. Изучаю книгу Роджерсона Основы Com. Там создается простейший интерфейс:
Код

#include <InitGuid.h>
interface IX : IUnknown
{
    virtual void pascal Fx() = 0 ;
};

interface IY : IUnknown
{
    virtual void pascal Fy() = 0 ;
};

interface IZ : IUnknown
{
    virtual void pascal Fz() = 0 ;
};

DEFINE_GUID(IID_IX, 0x32bb8320, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
DEFINE_GUID(IID_IY, 0x32bb8321, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
DEFINE_GUID(IID_IZ, 0x32bb8322, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
DEFINE_GUID(CLSID_Component1, 0x0c092c21, 0x882c, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);

И класс, реализующий эти функции (Реализацию IUnknown опустил):
Код

class CA : public IX, public IY 
{
public:
    // IUnknown
    virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv) ;
    virtual ULONG __stdcall AddRef() ;
    virtual ULONG __stdcall Release() ;

    // Interface IX
    virtual void __stdcall Fx() { cout << "Fx" << endl ;}

    // Interface IY
    virtual void __stdcall Fy() { cout << "Fy" << endl ;} 

    // Constructor
    CA() ;

    // Destructor
    ~CA() ;

private:
    // Reference count
    long m_cRef ;
} ;

Создание dll и регистрацию тоже опущу.
Вот часть клиента:
Код

CoInitialize(NULL);
IX* pIX = NULL ; 
HRESULT hr = ::CoCreateInstance(CLSID_Component1, NULL, CLSCTX_INPROC_SERVER, IID_IX, (void**)&pIX) ;

Ни CoInitialize(NULL), ни CoCreateInstance(...) не видны в C#. Как быть - то? Я хочу использовать свой сервер для вызова функций в клиенте, написанном на C#(графический интерфейс).

Это сообщение отредактировал(а) m9yt - 21.6.2012, 18:42
PM MAIL   Вверх
m9yt
Дата 22.6.2012, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Советовали в Project - Add Reference - COM выбрать свой сервер, а далее
Код

using MyComServerNamespace;
MyComServerClass test = new MyComServerClass();

Но проблема, свою библиотеку я там не вижу, хотя она зарегистрирована и видна в OleView.
Пробовал Project - Add Reference - Browse, выбирал свою dll, но ошибка
Please make sure that the files is accessible, and that it is a valid assembly or COM component.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.