0

新しい C# アプリケーションで使用したいいくつかの既存の C++ クラス (メソッドと #define 定数、およびいくつかの追加の C スタイル関数を含む) があります。これを行う最善の方法は何ですか?すべてを1つのexeにリンクしたいので、可能であればDLLはなく、クラスライブラリにリンクするだけです。

これを行う最善の方法は何ですか?それはかなり簡単ですか、それとも元のコードを C# に移植したほうがよいでしょうか?

4

2 に答える 2

4

私の知る限り、コードをプロジェクト/ソリューションに入れたい場合は、コードを C++/CLI に変換するのが最善の策かもしれません。

これらの C++ コードを外部ライブラリとして呼び出すだけの場合は、P/Invoke を使用できます。しかし、それに関する私の経験は苦痛でした。かなり些細なことを除けば、学習曲線は急勾配です。しかし、あなたを助けることができるSO(Hans Passantのような)の主題に関して本当に知識のある人々がいます.

もちろん、C# ですべてを書き直すオプションは常にあります。

于 2013-05-27T03:01:20.913 に答える
1

PInvoke/DLLIMPORTを使用して、C, C++.

更新 1 :

C 関数の呼び出しには成功しましたが、C++ クラス/メソッドの呼び出しには成功しませんでした。

これを行うには、Managed C++ を使用する必要があります。 この記事は役立つはずです..

更新 2 : で提案されているように再配置しDavidます。

純粋な C スタイルの実装では、 を使用できますP/InvokeLibGit2Sharpプロジェクトを使用できる参照。でネイティブを消費C.exeC#ます。ネイティブメソッドDllImportの呼び出しは次のとおりです

注:ここでは、 を出荷する必要がありますexe。他の .Net アセンブリにコンパイルすることはできません。

于 2013-05-27T03:01:06.043 に答える