この質問は、前の質問: Create DLL from unmanaged C++の続きですが、この新しい質問を理解するためにそれを読む必要はありません。
現在、いくつかの関数で構成されるアンマネージ C++ コードを含む DLL があり、そのうちの 1 つだけを外部で使用するためにエクスポートしています。次に、Managed C++ プロジェクト (共通言語ランタイム サポートでビルド) でこの DLL を使用する必要があります。Additional Include Directories
これまでのところ、 Visual Studio 2010 でを設定して、既存のアンマネージド プロジェクトのヘッダー ファイルへの参照を追加しました。
ここで DLL ファイルへの参照を追加しようとするとMyManagedProject > Properties > Common Properties > Add New Reference > Browse > MyUnmanagedDLL.dll
、エラーが発生します。Could not add a reference to file MyUnmanagedDLL.dll because it is neither a .NET assembly nor a registered ActiveX control.
ただし、前述の DLL を取得して、マネージ C++ の実行可能ファイルと同じフォルダーにコピーすると、すべて正常に動作します。
ハック的な解決策のように見えるため、これが正しい方法であるかどうかはわかりません。また、ソース コードを変更するたびに DLL をコピーする必要があります。
私の問題を要約するには:
- アンマネージ C++ コードで構成される DLL を作成しました。これを と呼びましょう
MyUnmanagedDLL.dll
。この DLL のヘッダー ファイルも作成しました。 - マネージ C++ プロジェクト (CLR) があります。それを呼び出しましょう
MyManagedProject.vxproj
- でどのように使用でき
MyUnmanagedDLL.dll
ますMyManagedProject.vxproj
か? それを参照する正しい方法はありますか、それとも同じディレクトリにコピーするだけMyManagedProject.exe
ですか? (これは機能しますが、良い習慣かどうかはわかりません...)
追加情報: Windows 7、Visual Studio 2010 Ultimate、CMake 2.8.10.2