私は初心者ですので、あまりにも些細なことがあれば、私と一緒に裸にしてください。私はこれをネットで検索したら、どうやって結果を得ているのですか?私の質問は、最初にそれをやる理由です。なぜクラスをC++でエクスポートする必要がありますか?
アトゥール
私は初心者ですので、あまりにも些細なことがあれば、私と一緒に裸にしてください。私はこれをネットで検索したら、どうやって結果を得ているのですか?私の質問は、最初にそれをやる理由です。なぜクラスをC++でエクスポートする必要がありますか?
アトゥール
これは、C++ DLLを開発しているWindowsプラットフォームに特有のものです。
DLLのエクスポートされたシンボルリストにクラスとそのメソッドを表示するには、__declspec(dllexport)修飾子を使用する必要があります。
このように、DLLを使用する実行可能ファイルは、これらのクラスのメソッドをインスタンス化して呼び出すことができます。
しかし、C++シンボルは比較的複雑な名前のマングリングエンコーディング(depends.exeを使用して見ることができます)を使用してエクスポートされるため、同じコンパイラの同じバージョンで実行可能ファイルとDLLがコンパイルされていることを確認する必要があります。コンパイラによって異なります。
技術的には、クラスのみをエクスポートすることはできません。 しかし、クラスレベルでは、すべての関数をエクスポートすることができます。
関数をエクスポートすると、その関数を現在の実行可能ファイルの外部から呼び出すことができます。
これは、たとえば別のエンティティであるdllを作成する場合に必要です。
これは正しくありません。 '__declspec(dllexport)'修飾子をクラスに置くことができます。この修飾子は、すべてのクラスの関数メンバの名前を変更して名前を付けてエクスポートします。 –
-1、クラスはエクスポートできますが、これは間違っています。 –
厳密に言えば、これは正しいです、あなたはクラスのみの関数をエクスポートすることはできません。ただし、クラスにマーキングすることで、クラス内のすべての関数をエクスポートするように指定できます。区別は微妙です。同意します:) – jcoder
もう少し詳しく教えてください。 –
「クラスをエクスポートする」とはどういう意味ですか? –
なぜ__declspec(dllimport)/ __ declspec(dllexport)クラスを実行する必要がありますか? – Atul