我正在尝试创建一个包含 VCL 数据模块的 dll - 想法是各种应用程序都可以加载相同的 dll 并使用相同的数据库代码。
数据模块本身作为应用程序的一部分经过测试可以正常 - 我已将表单复制到我的 dll 项目中。
所以在dll入口点方法中,我需要初始化数据模块:
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
//if I don't call this, I get an exception on initializing the data module
CoInitialize(NULL);
//initialize a standard VCL form; seems to works fine
//I'm not using Application->CreateForm as I don't want the form to appear straight away
if(!MyForm) MyForm = new TMyForm(Application);
//this doesn't work - the thread seems to hang in the TDataModule base constructor?
//I've also tried Application->CreateForm; same result
if(!MyDataModule) MyDataModule = new TMyDataModule(Application);
}
我还看到了一些关于在创建表单之前我需要如何调用 Application->Initialize 的信息,但这似乎没有任何区别。
有任何想法吗?
谢谢