どのようにC ++は、C#で作られたDLLをインポートすることができますか?

StackOverflow https://stackoverflow.com/questions/1110779

  •  12-09-2019
  •  | 
  •  

質問

私はC#で作られたDLLを持って、このDLLは、創造主のようないくつかのclasesが含まれています。

私は、このDLLをロードし、Cにクリエータ・クラスを使用する必要が++アンマネージド、

ので、そのインスタンスを作成するには、いくつかの方法はありますか私はちょうど機能が露出ロードする必要があります?

私はこのようなものが必要になります。


CreatorInstance->Init();

このかのうですか?

役に立ちましたか?

解決

C ++ / CLIを使用したジョン・フィッシャーのアプローチは、はるかにこれを処理する最も簡単な手段ですが、それが唯一の手段ではありません。

他の3つのオプションがあります:

1)使用COM相互運用機能COM経由での.NETクラスをラップする

2)あなたは、あなたのネイティブ、アンマネージアプリケーションでCLRをホストし、その中に呼び出すことができます。詳細については、この記事を参照してください。

3)あなたはMonoランタイムをホストし、マネージコードを呼び出すためにそれを使用することができます。これに関する詳細については、このページを参照してください。

オプション2および3非常に類似しているが、IMO、3は2よりも容易である。

他のヒント

あなたが必要なものの大半は、ここで見つけることができます: http://msdn.microsoft.com/en-us/library/x0w2664k%28VS.80%29.aspx の

主に、あなたはC ++のコンパイルのために/ CLRスイッチについて学ぶ必要があります。そして、あなたは、Microsoftが混在アセンブリを可能にするために追加C ++の拡張機能を理解する必要があります。 (C ++ "ポインタ" マネージクラスにはそれほどの代わりにP *のP ^を使用し、かつます。)

ここでは、/ CLRオプションを使用せずにこれを実現することができるはず方法についての興味深い記事がある。

http://www.codeproject.com/KB/cs/ManagedCOM.aspx

はかなりうまく動作します。

まず第一に、それは可能ですし、CLIまたは/ CLRスイッチを使用するには、「持って」いません。 // MSDN:あなたはかなり簡単に HTTPそれを行うことができます古き良きCOMアーキテクチャを使用します。 microsoft.com/en-us/library/zsfww439.aspxする。 COMの作品は、ここでの最大の課題かもしれませんが、あなたはそれを知っていれば、それは便利です。

の方法を理解します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top