Создать управляемый объект из функции неуправляемого класса - PullRequest
1 голос
/ 06 апреля 2011

Я пытаюсь создать управляемый объект C ++ / CLI в неуправляемом коде.

  1. Возможно ли это?
  2. Если это так, я делаю это правильно?см. код ниже

    #include <vcclr.h>
    #include <ManagedClass.h>
    
    // compiled with /clr
    namespace X 
    {
        class UnmanagedClass
        {
            UnmanagedClass(){}
            ~UnmanagedClass(){}
    
            gcroot<Y::ManagedClass^> m_guiControl;
    
            void functionA()
            {
                 m_guiControl = new gcroot<Y::ManagedClass^>;
            }
        }
    }
    
    // compiled into Managed dll with /clr
    // in file ManagedClass.h in a separate project
    using namespace System::ComponentModel;
    // more usings here ..etc
    
    namespace Y {
        public ref class ManagedClass : public System::Windows::Forms::UserControl
        {
            // implementation here
    
        }
    }
    

Когда я компилирую исходный файл UnmanagedClass, я получаю массу ошибок, первый из которых error C2039: 'ComponentModel' : is not a member of 'System'.Почему это не признает ComponentModel?

Я думал, что это должно быть IJW (это просто работает); -)

1 Ответ

1 голос
/ 06 апреля 2011

Вот пример для оболочки:

class UnmanagedClass
{
    gcroot<ManagedClass^> m_managed;

public:
    UnmanagedClass() 
    {
       m_managed = gcnew ManagedClass();
    }
};

Смотрите здесь:

C ++ / CLI - Управляемый класс для событий C #

Оболочка для C ++ / Cli

Редактировать

Когда вы получаете ошибку в операторе using и знаете, что он должен существовать, обычно это потому, что на dll нет ссылки.

Перейти к ссылкам на проекты, выбрать добавить ссылку.

Вы можете добавить сборки .Net на вкладке .Net. Найдите тот, который вам нужен, и добавьте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...