2012-01-03 13 views
0

私はDLLとしてコンパイルしているMyKinectDllというビジュアルスタジオプロジェクトを持っています。 MyKinectAppと呼ばれる別のプロジェクトが実行可能です。私は同じ解決策でそれらを持っています。 MyKinectAppからMyKinectDllへの依存関係を追加しました。 MyKinectAppからMyKinectDllへの参照を追加しました。 MyKinectDllの場所をMyKinectAppの追加インクルードディレクトリに追加しました。私のコードでは、#include "MyKinect.h"を追加しました。これはMyKinectDllのヘッダーの1つであり、認識されています。しかし、私がコンパイルすると、MyKinectDllだけが正常にビルドされ、MyKinectAppでヘッダーファイルが見つからないというエラーが表示されます。これらのヘッダーファイルはMyKinect.hで呼び出され、MyKinectDllの別の場所に存在し、正しくビルドされています。Visual C++でスタティックライブラリとしてDLLを追加する

リンカーの設定でMyKinectDllの.libにリンクする必要があるかどうかは不明ですが、試しても同じエラーが発生します。私は間違って何をしていますか?

ご協力いただきありがとうございます。

+0

あなたは使っていますか? dll関数/クラスをdllからエクスポートするには '__declspec(dllexport)'を使いましたか? –

+1

MyKinect.hで使用されるすべてのヘッダーの場所を、MyKinectAppプロジェクトの追加インクルードディレクトリに追加する必要があります。 – StevieG

+0

@StevieGそれを解決しました。ありがとうございました。しかし、私はこのステップが必要な理由を理解していません。もちろん、dllは単独で動作する必要があり、メインアプリケーションで参照する参照を必要としません。つまり、システムDLLを使用しても、参照するすべてのパスを含めても心配はありません。 –

答えて

2

あなたはLIBファイルにリンクれる(静的にリンクしているためです

.. MyKinectAppプロジェクトのインクルードディレクトリの追加にMyKinect.hによって使用されるすべてのヘッダの場所を追加する必要があります、dllではない)。リンカーは、リンクされているライブラリのヘッダーファイルを参照して、クラス/メソッド宣言を参照する必要があります。これは、libファイルでは使用できないためです。あなたが動的にリンクされた場合は、DLLインターフェイスでエクスポートとしてあなたは、この場合のヘッダのディレクトリを含める必要はありませんので、リンカは、クラス/関数宣言を参照することができ

.. Visual Studioのバージョンがある

関連する問題