我有一个 C++ 应用程序,它历史上使用 Delphi IClientTable 接口(MIDAS.DLL??)来维护本地文件数据库(.CDS 文件)。在我们的 C++ 应用程序中,IClientTable 是一个 COleDispatchDriver MFC 接口/对象。
我个人希望完全摆脱这一点并使用 SQLite,但不幸的是我现在无法做到这一点。
有人可以告诉我这个 COM 开销是否有开源替代品?我想要一个简单的 DLL、库或源文件集来编译到我的程序中,以摆脱让我非常痛苦的 COM 接口。
如果你真的想知道我为什么要去掉 COM 接口——这很奇怪——我们已经使用了 10 年没有问题。最近我们发现一个使用 Windows XP Embedded 的客户,由于某种原因,当我们使用 IClientTable COM 调度接口时,这会导致 Windows WM_QUERYENDSESSION 消息被吸收,或者不再到达我的应用程序。在我停止使用 IClientTable 接口的那一刻,我收到了 WM_QUERYENDSESSION 消息。
简而言之:IClientTable COM 调度接口似乎阻止了 Windows 被允许注销/关闭。