C ++ Builder XE2の次の最小限の例がアクセス違反を引き起こすのを見て、私は絶対に困惑しています。
実行可能ファイルとDLLで構成されるプロジェクトの場合:
Project1.dll / Dummy.h:
class __declspec(dllexport) Dummy : public TObject
{
public:
__fastcall Dummy();
__fastcall ~Dummy();
};
Project1.dll / Dummy.cpp:
__fastcall Dummy::Dummy()
: TObject()
{
}
__fastcall Dummy::~Dummy()
{
}
Project2.exe / Unit1.cpp:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Dummy *d = new Dummy; // access violation occurs in constructor
delete d;
}
両方のプロジェクトは、デフォルトのプロジェクトオプションを使用してゼロから作成され、両方ともVCLをサポートしています。Dummy
から継承しない場合、アクセス違反は発生しませんTObject
。
私は何が間違っているのですか?
ヘンドリックを応援します