Есть 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 кодом?