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++ など)を知っていますか? :-)

于 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 に答える