我正在尝试在非托管代码中创建托管C ++ / CLI对象。
如果是这样,我做得对吗?见下面的代码
#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(它只是有效); - )
答案 0 :(得分:1)
以下是包装器的示例:
class UnmanagedClass
{
gcroot<ManagedClass^> m_managed;
public:
UnmanagedClass()
{
m_managed = gcnew ManagedClass();
}
};
看这里:
C++/CLI - Managed class to C# events
修改强>:
当你在using语句中出现错误,并且你知道它应该存在时,通常是因为没有引用该dll。
转到项目参考,选择添加参考。
您可以在.Net选项卡中添加.Net程序集。找到你需要的那个并添加它。