У меня есть DLL, которая содержит класс, который наследуется от другого абстрактного класса C ++, определенного следующим образом:
class PersonInterface
{
public:
virtual int __stdcall GetName() = 0;
};
DLL экспортирует функцию, которую можно использовать в C # следующим образом (следующий метод является частью статического класса PersonManager
):
[DllImport( "person.dll", CallingConvention = CallingConvention.Cdecl )]
public static extern bool GetPerson( out PersonInterface person );
где PersonInterface
определяется в классе C # следующим образом:
[StructLayout( LayoutKind.Sequential )]
public class PersonInterface
{
}
Я могу успешно получить экземпляр класса C ++ следующим образом:
PersonInterface person;
bool retrieved = PersonManager.GetPerson( out person );
Однако извлеченный объект бесполезен, пока не будет вызван метод GetName
.
Что еще нужно сделать, чтобы можно было вызывать метод GetName
для извлеченного объекта person?
string name = person.GetName();