В поиске не нашел поэтому ->
имеется с++ длл с фабричными функциями.
в
base.dll
IBase* CreateConcreteBase1();
IBase* CreateConcreteBase2();
где-то в
base.h
interface IBase
{
virtual double __stdcall GetDouble() const = 0;
};
в с# клиенте
public interface IBase
{
double GetDouble();
}
[DllImport("qtu.dll", EntryPoint = "CreateConcreteBase1", CallingConvention = CallingConvention.StdCall)]
private static extern IBase CreateConcreteBase1();
void Main()
{
try
{
IBase base = CreateConcreteBase1();
}
catch (Exception e)
{
// получаем исключение SEHException c сообщением:
// "External component has thrown an exception."
}
}
Подскажите, что неправильно? Догадываюсь, что так просто не получается вернуть объект типа IBase, но вот что
делать не знаю.
ЗЫ. на COM переделывать пока не хочется.