2013-09-24 6 views
7

バックグラウンドとして、私はEmgu CVサンプルの1つを動作させようとしています。それは私が、関連するオープンCV DLLがプロジェクトの出力の実行ディレクトリにコピーされていることを確認しても、プロジェクトにEmgu CVのDLLへの参照を追加し、する必要が働いてサンプルコードを取得するにはthe answer to "Looking for a function for motion detection on emgucv"「常にコピー」ソリューションコンテンツ(DLL)を実行可能ディレクトリルート

で述べたMotion Detection exampleありますビルド。関連するDLLはon the EMGU wikiです。

私はコンテンツのプロパティで「常にコピー」サンプルプロジェクトへのコンテンツとして、それらを追加し、それらをマークすることにより、オープンCV DLLを追加している:

Content properties in VS2012 set to "Copy always"

私はこれらが乱雑にしたくありませんプロジェクトのルートレベルはので、私はこれらのDLLを置くためにプロジェクトフォルダを追加しました:私はプロジェクトをビルドするとき

Solution Explorer showing project folder with DLLs in

しかしDLLは、同じディレクトリにコピーされます。私は、DLLが実行ディレクトリにではなく、そのルートにコピーされることを保証するために設定する必要がありますどのような性質

File Explorer showing directory containing the DLLs

:彼らは私はしたくない実行ディレクトリ内内包しているフォルダを持っている。すなわち、階層、サブディレクトリよりも?彼らはどちらも.NETアセンブリがあるように私は、プロジェクトへの参照として、これらのDLLを追加することはできません

==========編集==========

注意もCOM Open CV C++ライブラリを使用しています。

答えて

3

私たちのグループはあなたに似たフォルダにファイルを保持しますが、プロジェクトにフォルダを追加するのではなく、によってこれらのDLLを参照します。をフォルダの最上位に追加します:

Image of adding items as a link

前述のように、常にコンテンツコピーとして(溶液フォルダに示す項目)各項目を設定します。

次にビルドするとき、彼らはあなたの出力ディレクトリにそれを行います: - あなたはまだメインのプロジェクトでそれらのすべてを見る -

output directory

はそれはのようにきれいではありませんが、少なくともそれらを正しい場所に置きます。

3

他の開発者と仕事中に話すと、別の回避策が使用されます。彼は、プロジェクトフォルダ内のDLLを保持し、その後、実行してディレクトリにDLLをコピーするには、プロジェクトのプロパティページでビルド後のイベントを追加します。

copy/b/y "$(ProjectDir)Libs\*.dll" "$(TargetDir)" 

user7116's adviceと私の同僚の偉大な回避策ですが、私はよちょっとした疑問を残して、誰かがサブディレクトリにではなく実行ディレクトリのルートにDLLを確実にコピーするようにコンテンツファイルのプロパティを実際に設定する方法を発見した(またはMicrosoftが追加した)。