Delphi中提示“尚未调用CoInitialize错误”的解决方法.docxVIP

  • 12
  • 0
  • 约1.54千字
  • 约 2页
  • 2021-11-08 发布于江苏
  • 举报

Delphi中提示“尚未调用CoInitialize错误”的解决方法.docx

2009-10-26 12:30 CoInitialize(LPVOID),它将以特定参数调用 CoInitializeEx,为当前单元初始化 COM 库,并标记协同模式为单线程模式。参数必须为 NULL。这是关于 OLE 和 COM 的问题。 CoInitializeEx(LPVOID),新版本,可以用参数指定协同模式,如多线程模式,但注意单元的协同模式是不能改的,如果在已经初始化为多线程的单元里初始化 OLE 将失败并返回 RPC_E_CHANGED_MODE。每个线程只要调用一次初始化就够了,同一线程中的后续调用也将通过,但会返回S_FALSE。后面解除初始化调用要与本调用一一对应,返回 S_FALSE 的 CoInitialize 调用也计算在内。应用程序的第一个线程将调用 CoInitializeEx(COINIT_APARTMENTTHREADED 或0),必须是最后一个解除初始化的。如果不按上面的顺序进行初始化/解除函数调用,在该单线程单元(STA)里后续的初始化调用将失败,应用程序将无法工作。由于无法控制本地服务器的载入/御载顺序,在 DLLMain 里调用初始化/解除函数是不安全的。 例: 在 DLL 中使用 ADO 数据库组件时,调用程序调用该 DLL 时会出现尚未调用CoInitialize错误,解决的办法是在程序初始化时调用 CoInitialize(nil

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档