关于dll中带有数据库控件的问题!

krakan 2004-09-12 04:32:12
以前看了一篇文章,说在dll中用到数据库控件,一定要有TDataModule和TSession,是这样的吗?
如果不是,那该怎么办?
以下是我想把数据库连接做到dll中,可是当调试的时候总会冒出:“Project go.exe raised exception class EOleSysError with message"尚未调用"CoInitialize。".Process stopped.Use Step or Run to continue.”



这是我的源程序
extern "C" __declspec(dllexport) _stdcall void DBConnect();
//---------------------------------------------------------------------------
__fastcall TDBC::TDBC(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TDBC::Button1Click(TObject *Sender)
{
DBConnection->ConnectionString ="Provider=SQLOLEDB.1;Password=" + pwd->Text+";Persist Security Info=True;User ID="+user->Text+";Initial Catalog="+dbname->Text+";Data Source="+addr->Text+";";

}
//---------------------------------------------------------------------------

void __fastcall TDBC::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void _stdcall DBConnect()
{
TDBC *DBC = new TDBC(NULL);
DBC->ShowModal();
delete DBC;
}
...全文
158 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaomatian 2004-12-04
  • 打赏
  • 举报
回复
#include "objbase.h"
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void *lpReserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
CoInitialize(NULL);//初始化COM对象
break;
case DLL_PROCESS_DETACH: //释放COM对象
CoUnitialize(NULL);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
default;
break;
}
}
ethZOD 2004-09-16
  • 打赏
  • 举报
回复
嘿嘿

偶在另一个线程里调用一样是这个错误

后来好象是在主线程里open了一下,就能用了

不知道为什么~~~
krakan 2004-09-15
  • 打赏
  • 举报
回复
唉,怎么经典的问题竟然没人回答
圣殿骑士18 2004-09-14
  • 打赏
  • 举报
回复
好惨啊,帮你顶。
krakan 2004-09-14
  • 打赏
  • 举报
回复
我顶!
sunliwen780502 2004-09-13
  • 打赏
  • 举报
回复
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void *lpReserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
CoInitialize(NULL);//初始化COM对象
break;
case DLL_PROCESS_DETACH: //释放COM对象
CoUnitialize(NULL);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
default;
break;
}
}
asimpleman 2004-09-13
  • 打赏
  • 举报
回复
gz
krakan 2004-09-12
  • 打赏
  • 举报
回复
没用啊!
ktcserver 2004-09-12
  • 打赏
  • 举报
回复
在你的DLL文件入口处加上
CoInitialize();

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧