У нас есть два проекта C ++ / CLI, проект с чистым CLR и проект со смешанным режимом, который предоставляет нашему неуправляемому доступу на базе кода к проекту с чистым CLR.У нас возникают проблемы с тем, чтобы проект смешанного режима мог видеть символы, определенные в чистом проекте CLR.
В частности, у нас есть форма, называемая MainForm, определенная в чисто управляемом проекте.Это типичная форма C ++ / CLI Windows:
MainForm.h:
public ref class MainForm : public System::Windows::Forms::Form
{
public:
MainForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
}
...
};
Наш проект «обертки» в смешанном режиме пытается использовать его, например:
ManagedDialogProvider.h:
namespace ManagedWrapper
{
public ref class ManagedDialogProvider
{
static void ShowDialog()
{
OurManagedComponents::MainForm^ form = gcnew OurManagedComponents::MainForm();
}
};
}
(У нас есть класс C ++ / MFC в проекте смешанного режима, CManagedDialogProvider, который вызывает ManagedDialogProvider, чтобы наш неуправляемый код мог его использовать. Ошибка там не возникает, однако.)
Когда я пытаюсь создать проект в смешанном режиме, он говорит мне, что MainForm не является членом OurManagedComponents.(Ошибка в ManagedWrapper :: ManagedDialogProvider :: ShowDialog ().)
Примечания:
- Проект в смешанном режиме имеет ссылку на управляемый проект.
- Я попытался использовать #include в верхней части класса управляемой оболочки вместо ссылки, и, хотя это скомпилировано, я не смог загрузить форму из-за того, что ее ресурсы не были найдены.Я отказался от этого решения, так как оно не принято, если я правильно понимаю;Проекты .NET должны ссылаться друг на друга только через ссылки на сборки.
- Я проверил, что управляемый класс доступен (общедоступный).
- Я проверил обозреватель объектов, чтобы убедиться, что OurManagedComponentsвидимый и содержит MainForm.
Есть идеи?Тот же проект в смешанном режиме без проблем переносит управляемые компоненты C #, но когда я попытался использовать тот же подход для этого управляемого компонента C ++ / CLI, появились эти проблемы.