gccコンパイラの CLI バックエンドを使用して lib x264 をコンパイルした人はいますか? (x264 を .net dll にコンパイル)
1 に答える
1
C99 機能を使用していますか? そうでない場合は、オプションを指定した Visual C++ で/clr:pure
うまくいくはずです。他の .NET プロジェクトが呼び出すことができるエントリポイントを定義するには、C++/CLI を少し混ぜる必要がありますが、それらは完全に別のファイルにすることができます (C のみのソース ファイル全体をネイティブ プロジェクトと共有できます)。
編集:これを機能させるための基本ガイド:
- Visual Studio で、C++/CLI クラス ライブラリ プロジェクトを作成します。
- すべての C ソース ファイルをプロジェクトに追加します。
- プロジェクト構成で、ヘッダーが見つかるようにインクルード パスを設定します
- プロジェクト構成で、「共通言語ランタイムの使用」も
/clr:pure
- 新規プロジェクト ウィザードで作成された .cpp ファイルに、
#include
使用する関数をプロトタイプ化したヘッダー ファイルのディレクティブを追加します。 - 新しいプロジェクト ウィザードによって作成された
ref class
(前述の .cpp ファイル内) で、C ライブラリ関数を呼び出すいくつかの関数 (おそらく静的関数) を追加します。 - コンパイルし、この .DLL を C# プロジェクトの参照として追加して、お楽しみください
ヒントとして、ライブラリ内のref class
for every 関数で転送関数を作成する代わりに、一連のライブラリ関数を呼び出して、(特定のプロジェクトにとって有用な特定の定義のために) 有用な機能を実行する関数を作成することをお勧めします。
おそらく、.NETを C 文字列marshal_as
に変換して元に戻すのに適したテンプレートに慣れたいと思うでしょう。System::String
于 2010-07-13T03:01:02.463 に答える