私はこの DLL プロジェクトを作成しており、コンパイラ固有のマクロは一切含めていません。
インポーター (.exe) ファイルはクリーンにコンパイルされ、DLL ファイルにメソッドをインポートした後にエラーは生成されません。それらは異なるプロジェクトにありますが、同じソリューションです。
これらの呼び出し規約を使用していないために、ここで物事を台無しにしますか?
私の DLL ファイルは名前空間にあり、OOP 方式で実装されています。
しかし、時々、またはほとんどの場合、.lib が生成されないため、DLL の設定を LIB に切り替え、生成された .lib ファイルをコピーして、再度 DLL ファイルに戻す必要があります。
また、使用しているライブラリが .dll ファイルなのか .lib ファイルなのかさえわかりません。
誰かが私にそれを明確に説明してくれますか?
編集
いつ使用するかについて本当に混乱している状況をいくつか追加します。
私はこれらを持っていると思います:
namespace
{
class Base abstract
{
public:
Base()
{
//initialize base components
}
virtual void func() = 0;
public:
//interface
};
class Derive : public Base
{
public:
Derive();
void func() override;
private:
//interface
};
}
ここで使用する必要がdeclspec(dllexport)
あります:
(や
constructors
など) ?Base()
Derive()
virtual
機能?どこに置くの?派生またはベースで?または両方?- パブリック変数?(最悪!)
私は他のヘッダーファイルを見て、それに追加extern
します。ここで必要ですか?
これにより、すべてのコード構文が台無しになります
答えてください....