2009-12-06 37 views
2

我已经将C#DLL添加到C++项目中作为mentioned at MS support,但是我无法访问类中的变量和方法。它也说它是一个结构,而不是一个类,我不知道它是否重要,但我认为我应该提及它。每当我写作。或 - >或::在对象之后,什么都不出现。但它只出现在班级的名字上,尽管它们不是静态的。从C++项目访问C#DLL中的类的成员的问题

+0

如何显示问题的最小代码? – sdg 2009-12-28 02:23:37

+0

目前还不清楚这个问题实际上是关于如何访问dll中编写的C#方法,或者说“Intellisense无法识别这些方法”以及“如果它是托管C++/CLI还是非托管C++ ......” – pascal 2010-07-13 05:08:11

回答

0

从Visual Studio 2005开始,您可以使用Microsoft的ECMA批准的C++方言C++/CLI,该方言允许将托管代码和非托管代码结合在一起。在VS2005中,有“C++托管扩展”,你可以用它来达到大致相同的目的,但是你必须用C++编写托管代码(带有大量双下划线)来使用可怕的语法。使用C++/CLI,可以在项目中混合使用托管代码和非托管代码,并直接使用C#类型。恕我直言,这比使用COM更容易。

0

为了提高兼容性,我不从我的DLL(C#或C++)中导出类。相反,我公开这个类的函数,但每个函数的第一个参数是一个指向类本身的指针。你可能还需要公开一个:void * CreateMyClassInstance()和a:DestroyMyClassInstance(void * pInstance)。