У меня есть приложение C++, которое исторически использует интерфейс Delphi IClientTable (MIDAS.DLL??) для поддержки локальной файловой базы данных (файл .CDS). В нашем приложении C++ IClientTable является интерфейсом/объектом COleDispatchDriver MFC.
Лично я хотел бы вообще отойти от этого и использовать SQLite, но, к сожалению, я не в состоянии сделать это прямо сейчас.
Может ли кто-нибудь сказать мне, есть ли замена с открытым исходным кодом для этих накладных расходов COM? Я хотел бы, чтобы простая DLL, библиотека или набор исходных файлов скомпилировались в мою программу, чтобы избавиться от COM-интерфейса, который причиняет мне столько горя.
Если вы действительно хотите знать, почему я хочу избавиться от COM-интерфейса — это странно — мы использовали его в течение 10 лет без проблем. Недавно мы нашли клиента с Windows XP Embedded, и по какой-то причине, когда мы используем интерфейс отправки COM IClientTable, это приводит к тому, что сообщения Windows WM_QUERYENDSESSION поглощаются или больше не достигают моего приложения. Как только я прекращаю использовать интерфейс IClientTable, я получаю сообщения WM_QUERYENDSESSION.
Вкратце: интерфейс диспетчеризации IClientTable COM, по-видимому, не позволяет Windows выйти из системы / завершить работу.