私はC#で作成されたDLLを持っていますが、このDLLにはCreatorのようないくつかのクラスが含まれています。
このDLLをロードし、C++アンマネージでCreatorクラスを使用する必要があります。
そのインスタンスを作成する方法はありますか、それとも公開されている関数だけをロードする必要がありますか?
私はこのようなものが必要です:
CreatorInstance->Init();
これは可能ですか?
必要なもののほとんどはここで見つけることができます:http://msdn.microsoft.com/en-us/library/x0w2664k%28VS.80%29.aspx
主に、C++コンパイル用の/clrスイッチについて学ぶ必要があります。次に、混合アセンブリを可能にするためにMicrosoftが追加したC++拡張機能を理解する必要があります。(マネージクラスへのC ++の「ポインター」は、p*の代わりにp^を使用します。)
C ++ /CLIを使用したJohnFisherのアプローチは、これを処理する最も簡単な手段ですが、それが唯一の手段ではありません。
他の3つのオプションは次のとおりです。
1)COM相互運用機能を使用して、COM経由で.NETクラスをラップします
2)ネイティブの管理されていないアプリケーションでCLRをホストし、それを呼び出すことができます。詳細については、こちらの記事をご覧ください。
3)Monoランタイムをホストし、それを使用してマネージコードを呼び出すことができます。詳細については、こちらのページをご覧ください。
オプション2と3は非常に似ていますが、IMO、3は2よりも簡単です。
/CLRオプションを使用せずにこれを実現する方法に関する興味深い記事があります
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
かなりうまく機能します。
まず第一に、CLIまたは/clrスイッチを使用する必要はありません。古き良きCOMアーキテクチャを使用すると、非常に簡単に実行できますhttp://msdn.microsoft.com/en-us/library/zsfww439.aspx。COMがどのように機能するかを理解することは、ここでの最大の課題かもしれませんが、一度理解しておくと役に立ちます。