DLL在创建ADO对象时使程序异常终止

古吉普

我有几个使用C ++ Builder 6创建的数据模块。每个模块都使用另一个数据模块来初始化与数据库的连接。我正在尝试从这些数据模块中制作一个DLL。

该错误在创建DataModule_Users时引发,并显示“程序异常终止”。

我哪里出问题了?

提前致谢

datamodule_dll.bpf

USEFORM("DataModule_Connection.cpp", DataModule_Connection); /* TDataModule: File Type */
USEFORM("DataModule_Users.cpp", DataModule_Users); /*TDataModule: File Type */
//------------------------------------------------------------------
This file is used by the project manager only and should be treated like the project file

DllEntryPoint

datamodule_DLL.cpp

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
  return 1;
}
extern "C" __declspec(dllexport) const char * GetUserName(const char * ID);

const char * GetUserName(const char * ID) {
  CoInitialize(NULL); // datasets use COM
  // This is used by DataModule_Users (normally this is done with Application->CreateForm();
  DataModule_Connection = new DataModule_Connection( 0 /* Owner */ );
  DataModule_Users = new DataModule_Users( 0 /* Owner */ );
  return DataModule_Users->GetUserName(ID);
}
古吉普

我会引用雷米·勒博(Remy Lebeau)的话:

COM是在每个线程的基础上初始化的。一旦设置了线程的COM模型(公寓式还是多线程式),以后就无法更改。如果您的DLL在调用者之前调用CoInitialize(),则您的参数将具有优先级,这可能无法满足调用者的需求。如果要控制DM的COM设置而不影响调用者,则必须将DM移动到它们自己的线程中。此外,无论如何,DllEntryPoint()并不是初始化它们的适当位置。操作系统限制了DllEntryPoint()可以执行的操作。

这解决了问题。在加载库之前,我必须调用coInitialize()。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

程序以信号SIGABRT终止,异常终止

来自分类Dev

当程序被迫退出时如何创建异常?

来自分类Dev

终止引发异常的处理程序

来自分类Dev

终止引发异常的处理程序

来自分类Dev

程序异常终止turbo c

来自分类Dev

应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

来自分类Dev

应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

来自分类Dev

在 C++ Builder 中使用 TREST 组件时如何修复“程序异常终止”?

来自分类Dev

在此程序中创建对象时?

来自分类Dev

在.NET中从Skype创建对象时发生异常?

来自分类Dev

创建com对象时构造函数中的异常

来自分类Dev

使用fastxml从JSON创建Java对象时出现异常

来自分类Dev

如何解决“ FactoryBean在对象创建时引发异常;”

来自分类Dev

出现异常时如何不创建对象(python)?

来自分类Dev

程序终止时堆栈损坏?

来自分类Dev

Rebus,从异步处理程序创建AppDomain /实例时发生异常

来自分类Dev

尝试终止任务时发生异常

来自分类Dev

当创建COM对象的线程终止时,它会被CLR释放吗?

来自分类Dev

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“索引0的节中索引3处没有对象”

来自分类Dev

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** setObjectForKey:对象不能为零(键:索引)”

来自分类Dev

为什么在不处理Java中异常的情况下调用引发RuntimeException的方法时,程序不会终止?

来自分类Dev

MessageBox“程序异常终止”使我的应用程序运行

来自分类Dev

MoqRT错误-创建MoqRT.Baked.dll时出现未处理的异常

来自分类Dev

在.Net应用程序中调用C ++ Dll时出现System.Access违规异常

来自分类Dev

(无法在wine上运行exe应用程序)-err:module:attach_process_dlls“ MSVCP140.dll”初始化失败,异常终止

来自分类Dev

当无类型对象终止时,phash中断

来自分类Dev

使用期货时程序未终止

来自分类Dev

找到相似元素时如何终止程序

来自分类Dev

mac应用程序,在关闭时终止

Related 相关文章

  1. 1

    程序以信号SIGABRT终止,异常终止

  2. 2

    当程序被迫退出时如何创建异常?

  3. 3

    终止引发异常的处理程序

  4. 4

    终止引发异常的处理程序

  5. 5

    程序异常终止turbo c

  6. 6

    应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

  7. 7

    应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

  8. 8

    在 C++ Builder 中使用 TREST 组件时如何修复“程序异常终止”?

  9. 9

    在此程序中创建对象时?

  10. 10

    在.NET中从Skype创建对象时发生异常?

  11. 11

    创建com对象时构造函数中的异常

  12. 12

    使用fastxml从JSON创建Java对象时出现异常

  13. 13

    如何解决“ FactoryBean在对象创建时引发异常;”

  14. 14

    出现异常时如何不创建对象(python)?

  15. 15

    程序终止时堆栈损坏?

  16. 16

    Rebus,从异步处理程序创建AppDomain /实例时发生异常

  17. 17

    尝试终止任务时发生异常

  18. 18

    当创建COM对象的线程终止时,它会被CLR释放吗?

  19. 19

    由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“索引0的节中索引3处没有对象”

  20. 20

    由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** setObjectForKey:对象不能为零(键:索引)”

  21. 21

    为什么在不处理Java中异常的情况下调用引发RuntimeException的方法时,程序不会终止?

  22. 22

    MessageBox“程序异常终止”使我的应用程序运行

  23. 23

    MoqRT错误-创建MoqRT.Baked.dll时出现未处理的异常

  24. 24

    在.Net应用程序中调用C ++ Dll时出现System.Access违规异常

  25. 25

    (无法在wine上运行exe应用程序)-err:module:attach_process_dlls“ MSVCP140.dll”初始化失败,异常终止

  26. 26

    当无类型对象终止时,phash中断

  27. 27

    使用期货时程序未终止

  28. 28

    找到相似元素时如何终止程序

  29. 29

    mac应用程序,在关闭时终止

热门标签

归档