2009-06-12 16 views
4

Visual C#で問題なく使用していたDLLがあります(単純に参照を追加し、名前空間を使用しています)。今私はC++を学ぼうとしていますが、DLLから名前空間をどのように参照するのか分かりません。プロジェクトを右クリックして「参照」を選択し、そこから「新しい参照を追加」をクリックすることができますが、空の「プロジェクト」ウィンドウが表示されます。私は何が欠けていますか?Visual Studio C++でDLLを使用する

答えて

6

C++は、DLL参照の処理に関しては、C#/ VB.Netとは異なり、と異なります。です。 C#では、内部にある構造を記述するメタデータが含まれているため、参照を行うために必要なのはDLLです。コンパイラは、この情報を他のプロジェクトから使用できるように読むことができます。

C++は、C#がないという意味で、DLL内のメタデータの概念がありません。代わりに、ヘッダーファイルの形式でメタデータを明示的に提供する必要があります。これらのファイルはC++プロジェクトに含まれており、実行時にDLLが遅延ロードされます。実際にC++で話すために "参照を追加"するのではなく、ヘッダーファイルをインクルードします。

ヘッダファイルが含まれているならば、あなたは、あなたのCPPファイルに

using namespace SomeNamespace; 
+1

Ew、using namespace:| – GManNickG

+0

@GMan、ヘッダーファイルで実行されるのは本当に悪いことです。私は本当にあなたのCPPファイルで言うことを意味しましたが、代わりにC++をタイプしました。 – JaredPar

+0

'using namespace'は、他のすべてのものと同様に、正しくまたは間違って使用できるツールです。ヘッダーファイルの 'using namespace' - 悪いC++ファイルで 'using namespace' - 一般的にOKです。それが問題を引き起こすまで、あなたはそれをやめるだけです。 –

0

EDITを含めることによって、名前空間にアクセスすることができます:あなたが管理されていないC++を使用している場合、以前の答えは、より便利になります。私はあなたが管理対象C++を対象としていたC#参照のために仮定しました。

一連のタブが必要ですダイアログ「参照の追加」を - 現在のソリューションの「プロジェクト」リストプロジェクトを、 .NETはGACにインストールされているライブラリを一覧表示し、「参照」ではDLLを自分で見つけることができます。

あなただけのDLLへの参照を追加したい場合は、「参照」でそれを行うことができるはずです。それがソースを持っているプロジェクトの出力であれば、プロジェクトをソリューションに追加すると、 'プロジェクト'タブに表示されます。

この問題が解決しない場合は、使用しているのVisual Studioのバージョン、および/あなたが欲しいDLLは何を使用することですか?あなたは純粋なネイティブC++を使用している場合、あなたはC#アプリケーションで使用したのと同じDLLを使用しようとしている場合

3

まず第一に、そのDLLに呼び出しを行うことは簡単ではありません。問題は、C#で参照しているDLLが実行するために.NETフレームワークに依存していることです(すべてのC#、VB.NETおよびC++/CLIアセンブリが「管理」DLLです)。 C++から管理されたコードを簡単に参照する方法は、管理されたC++プロジェクト(Visual StudioのC++プロジェクトウィザードの「CLR」セクションから選択)を作成することです。そうでなければ、管理されたDLLにアクセスする唯一の方法は、それをCOMに公開し、COMを使用してオブジェクトにアクセスすることです。

関連する問題