3

膨大な数の MEX ファイルで構成される Matlab ライブラリを管理しています。これまで、Matlab スクリプトを使用してライブラリを構築してきましたが、ビルド プロセス全体で Microsoft Visual Studio IDE の使用を開始したいと考えています。私は次の指示でかなり遠くまで行きました:

ただし、これらの手順は単一の MEX ファイルでのみ機能するようです。私が抱えている問題は、単一の Visual Studio プロジェクト内で複数の .mexw32 ターゲット (または同等の .dll ターゲット) をビルドする方法ですか? MEX ファイル用に (同じソリューション内で) 別のプロジェクトを作成することは、私が検討したいオプションではありません。これらのファイルは数百に数えられます。

Matlab に慣れていない方のために説明すると、MEX ファイルは C++ で記述された拡張ファイルであり、本質的に特別な拡張子 .mexw32 を持つ .dll ファイルにコンパイルされます。これらはそれぞれ、1 つのエントリ ポイントをエクスポートしvoid mexFunction(...)ます。私の知る限り、これらを単一の.dllにリンクすることはできません。これは私がやりたいことです。

4

2 に答える 2

1

これを MATLAB スクリプトで作成する方が簡単な場合があります。たとえば、次のような MATLAB コマンド:

mex -f msvc90opts.bat MyMexFile.c

仕事をします。明らかに、MEX ファイルごとに 1 行になります。このmsvc90opts.batファイルは、MATLAB インストール フォルダーの にあるテンプレートに基づいていますbin\win32\mexopts

私のビルド プロセスでは、これらの呼び出しをmex関数にラップし、次を使用してコマンド ラインから呼び出します。

matlab.exe -wait -sd . -nosplash -nojvm -r "BuildMex, exit"
于 2011-01-21T16:18:28.707 に答える
0

MEX ファイルごとにプロジェクトを作成し、それらを 1 つのソリューションに入れることが唯一の選択肢だと思います。プロジェクト ファイルは、静的ライブラリ、動的ライブラリ、または実行可能ファイルなど、1 つのターゲットを表すように設計されています。ソリューションは、プロジェクトのコレクションと、それらが互いにどのように依存しているかを表すように設計されています。それはまさにあなたが必要とするものです。

おそらく、いくつかのスクリプトを使用してすべてを自動化して、非常に多数のプロジェクトを作成し、それらを単一のソリューションに追加する可能性を検討する必要があります。

于 2011-01-21T16:17:21.547 に答える