我有一个以前使用Delphi IClientTable接口(MIDAS.DLL??)的C++应用程序。维护本地文件数据库(.CDS文件)。在我们的C++应用程序中,IClientTable是一个COleDispatchDriver MFC接口/对象。
就我个人而言,我希望完全摆脱这一点,转而使用SQLite,但不幸的是,我现在不能这样做。
有没有人能告诉我有没有开放源码的方法来替代这个COM开销?我想要一个简单的DLL,库或一组源文件编译到我的程序中,以摆脱COM接口,它给我带来了如此多的痛苦。
如果你真的想知道为什么我想要摆脱COM接口--这很奇怪--我们已经使用它10年了,没有任何问题。最近,我们发现一位使用Windows XP Embedded的客户,由于某些原因,当我们使用IClientTable COM分派接口时,这会导致Windows WM_QUERYENDSESSION消息被吸收,或者不再到达我的应用程序。在我停止使用IClientTable接口的那一刻,我收到了WM_QUERYENDSESSION消息。
简而言之: Windows调度界面似乎阻止了IClientTable被允许注销/关机。
发布于 2012-03-31 05:53:08
我不知道有任何打开二进制ClientDataSet文件的替代方法。ClientDataSets也可以使用XML文件格式,但是我不知道您的IClientTable接口是否允许您访问该功能。
如果你还没有意识到这一点,我想在Delphi2007或Delphi2009中,ClientDataSet对COM的依赖已经被移除了。如果COM依赖来自ClientDataSet,那么在Delphi的最新版本中重新编译包装器DLL可能会有所帮助。
据我所知,在Delphi的任何版本中都没有IClientTable这样的东西。我猜IClientTable是您的团队为封装ClientDataSet的特性而编写的包装器DLL的一部分。如果编写包装器DLL人员将IClientTable接口公开为COM对象,这也可能是您依赖COM的部分原因。
https://stackoverflow.com/questions/9935004
复制相似问题