2011-01-21 12 views
2

私は膨大な数のMEXファイルで構成されるMatlabライブラリを維持しています。ここまではMatlabスクリプトでライブラリを構築しましたが、ビルドプロセス全体でMicrosoft Visual Studio IDEを使用したいと考えています。単一のVisual Studioプロジェクトで複数の.dllファイル(.mexw32ファイル)をビルドする方法は?

これらの命令は、単一のMEXファイルで動作するように見えるしかし:私は、次の手順で、かなり遠く頂いております。私が抱えている問題は、複数の.mexw32ターゲット(または同等の.dllターゲット)を1つのVisual Studioプロジェクト内に構築する方法です。 MEXファイルのための別個のプロジェクトを(同じソリューション内で)作成することは、私が検討したいと思う選択肢ではありません。これらのファイル数は数百に上ります。

Matlabに精通していない人のために、MEXファイルはC++で書かれた拡張ファイルで、本質的に.mexw32という特別な拡張子を持つ.dllファイルにコンパイルされています。これらはそれぞれ、単一のエントリポイントvoid mexFunction(...)をエクスポートします。 AFAIKあなたは私がしたいと思うものである単一の.dllにこれらをリンクすることはできません。

+0

百のMEXファイルのか? C++でプログラム全体を書くだけではどうですか? –

答えて

0

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

多量のプロジェクトを作成して単一のソリューションに追加するために、いくつかのスクリプトを使ってすべてを自動化する可能性を検討する必要があるかもしれません。

1

これをMATLABスクリプトで作成する方が簡単かもしれません。たとえば、次のようなMATLABコマンド:

mex -f msvc90opts.bat MyMexFile.c 

が実行されます。明らかに、MEXファイルごとに1つの行があります。 msvc90opts.batファイルは、bin\win32\mexoptsのMATLABインストールフォルダに用意されているテンプレートに基づいています。私のビルドプロセスについては

私は、関数にアップmexにこれらの呼び出しをラップして、コマンドラインから使用していることを呼び出します。

matlab.exe -wait -sd . -nosplash -nojvm -r "BuildMex, exit" 
関連する問題