尚未调用CoInitialize是什么作用,查了帮助,好像没有呐!

initora 2005-02-20 10:10:48
打×××这里的错误:

// Unit Methods
void Initialise(String DatabaseName)
{
assert(ADOConn == NULL);
××××ADOConn = new TADOConnection(NULL);××××××××××
ADOConn->ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" + DatabaseName;
ADOConn->KeepConnection = True;
ADOConn->Open();
IDAllocator = new TIDAllocator(DatabaseName);
}
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
initora 2005-02-21
  • 打赏
  • 举报
回复
我没用到DLL,TADOConnection *ADOConn是在我的DataManagementADO.cpp声明的,我的TPDObject对象(在我的ProblemDomain单元里)调用了
//Unit methods
static void Initialization()
{
::Initialise("Northwind");
GlobalOrdersDM = new TOrdersDM();
GlobalOrdersDM->Initialise();
}
是我的Initialization函数(#pragma startup Initialization 32),其调用了DataManagementADO单元的
// Unit Methods
void Initialise(String DatabaseName)
{
assert(ADOConn == NULL);
ADOConn = new TADOConnection(NULL);
ADOConn->ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" + DatabaseName;
ADOConn->KeepConnection = True;
ADOConn->Open();
IDAllocator = new TIDAllocator(DatabaseName);
}
然后就报这个错误了,不知道CoInitialize应该实现,哪里的机制?
Friecin 2005-02-20
  • 打赏
  • 举报
回复
还有,关于CoInitialize

API中的
CoInitialize(NULL);
UnCoInitialize(); 必须成对出现;
DLL也有退出的出口:

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if (reason==DLL_PROCESS_ATTACH) // DLL入口
CoInitialize(NULL);
else
if (reason==DLL_PROCESS_DETACH)
UnCoInitialize(); // DLL结束

return 1;
}
Friecin 2005-02-20
  • 打赏
  • 举报
回复
TADOConnection *ADOConn = new TADOConnection(NULL);


如果你在.h中,声明了 TADOConnection *ADOConn,并声明你的函数 void Initialise(String DatabaseName),假设这段代码是在 DataModal中的话,则:

在CPP中的定位为:

void TDataMod::Initialise(String DatabaseName)
{
...
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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