0

看到 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

我究竟做错了什么?

干杯亨德里克

4

1 回答 1

1

如果您__declspec(dllexport)PACKAGE.

我已经在各种项目配置中对此进行了测试,它似乎有所作为——不再崩溃。但是,我无法再延迟加载 DLL。

在我看来像一个 C++ Builder 错误。

于 2012-07-30T15:05:44.050 回答