Я пытаюсь создать экземпляр устаревшего класса C ++ в VB.NET. Я следовал инструкциям на следующей веб-странице: http://windowsdevcenter.com/pub/a/dotnet/2004/03/29/mcpp_part3.html?page=2
1) Создан проект Visual C ++ с одним файлом (MFoo.cpp) и следующим кодом:
class Foo
{ public:
// constructor
Foo(void) {}
// destructor
~Foo(void) {}
// some method
void DoSomeFoo(){} };
__gc class MFoo
{ public: Foo * _foo;
public:
// constructor
MFoo() { _foo = new Foo();}
// destructor
~MFoo() { delete _foo; }
// method
void ManagedDoSomeFoo() { _foo->DoSomeFoo(); } };
2) Построил проект в Visual C ++, создавая DLL
3) Создана ссылка на DLL (созданную в части 2) в приложении VB.NET
Теперь я получаю сообщение об ошибке при попытке создать экземпляр объекта C ++, т. Е. Dim foo As New MFoo. Ошибка: MFoo недоступен в этом контексте, потому что это Friend.
Вам нужно объявить класс MFoo как открытый, заменить строку __gc class MFoo
с public __gc class MFoo
Других решений пока нет …