.NET Interop. Маршалинг абстрактного класса (интерфейса)
От: r13m84ps  
Дата: 07.04.08 11:05
Оценка:
Есть DLL, которая экспортирует функцию создания объекта — упрощенный вариант CoCreateInstance. Объект представлен своим интерфейсом:

#ifdef __cplusplus
extern "C" {
#endif
#ifdef FOO_EXPORT
    #define FOO_API __declspec(dllexport)
#else
    #define FOO_API __declspec(dllimport)
#endif
    class IFoo
    {
    public: 
        virtual int FooFunc(int a, int b) = 0;
    };
    class CFoo: IFoo
    {
    public:
        virtual int FooFunc(int a, int b)
        {
            return a + b;
        }
    };
    int FOO_API CreateFoo(IFoo** ppIFoo);
#ifdef __cplusplus
}
#endif


Создание объекта определяется следующим образом:

int CreateFoo(IFoo** ppIFoo)
{
    *ppIFoo = (IFoo*)(new CFoo);
    return 0;
}


Каким образом в .NET описать интерфейс IFoo и импортировать функцию создания объекта не пользуясь unsafe кодом?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.