【发布时间】:2012-07-10 20:00:34
【问题描述】:
我正在使用 c++-cli 生成一个 dll。 dll 中的类如下所示:
ref class Locator
{
public:
Locator(int HP) : m_HP(HP) { }
~Locator()
{ }
Dictionary<String^, array< Byte >^>^ Locate(Dictionary<String^, String^>^ imgParms)
{ ..... }
private:
int m_HP;
如何公开它以在 c# 中使用它?类和成员没有在 c# 中公开
【问题讨论】:
-
如果这是一个“普通”的 C/C++ 程序,你会使用 Interop。由于这是一个 C++-CLI(托管 C++)程序,您应该已经拥有程序集。只需在您的 C# 客户端中引用它们即可。 PS:老实说,我很好奇为什么有人想要使用 C++ CLI(与 VB.Net 或用于 .Net 的 C# 相比,或者为了可移植性和效率而使用标准 C++)?它总是让我感到困惑......
-
应该是
ref class Locator。 -
paulsm4:有时,需要与本机库进行互操作,编写正确的 P/Invoke 和 ComImport 魔法可能比将整个 shebang 包装在 C++/CLI
ref class中更困难. :) -
我必须使用 C/C++,因为我使用 OpenCV 进行图像处理,但我会尝试参考
-
所以我将 ref 添加到类定位器中,现在它无法编译:错误 C2664: 'cvReleaseCapture' : cannot convert parameter 1 from 'cli::interior_ptr
' to 'CvCapture **' 1> with 1> [ 1> Type=CvCapture * 1> ] 1> 无法将托管类型转换为非托管类型