0

我正在使用 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# 中公开

4

3 回答 3

4

您需要使用public关键字使托管类型对程序集的使用者可见。尝试

public ref class Locator { ... };
于 2012-07-10T22:03:31.353 回答
0

几个月前我问过一个关于类似问题的问题:

如何使用 C# 中的 C 回调?

以下是我对这个问题的回答中的一些额外提示:

从 C++ 调用 C++ DLL 有效,但不能从 C#

我读到你正在使用 OpenCV,你知道Emgu CV: OpenCV in .NET (C#, VB, C++ and more)吗?:-)

于 2012-07-10T22:08:54.163 回答
-1

C++/CLI 生成标准的 .NET 托管程序集。这就是 C++/CLI => 将现有 C++ 代码编译为托管程序集而不将其重写为 CLS 语言的全部意义所在。

因此,只需将此程序集作为您使用项目中的任何其他 .NET 程序集进行引用。然后消费:

var imgParms = new Dictionary<string, string> { { "foo", "bar" }, { "baz", "bazinga" } };
var locator = new Locator(123);
var result = locator.Locate(imgParams);
// TODO: do something with the result dictionary
于 2012-07-10T20:02:20.927 回答