我有一个需要使用 LoadLibrary() 动态加载并使用 __cdecl 调用约定的第 3 方 DLL。我需要能够使用 VB6 中的 dll,所以我创建了自己的包装 DLL,它使用 __stdcall 调用约定并导出所需的函数。
现在已经有一个额外的要求,我正在努力寻找如何管理;包装的 DLL 为另一个应用程序提供了一个 API,我需要同时连接到应用程序的两个实例。这是一个问题,因为 DLL 没有会话的概念,典型的交互如下所示:
tpc_connect("service1")
// Do some stuff
tpc_disconnect()
我需要做的是
session1 = tpc_connect("service1")
session2 = tpc_connect("service2")
// Do some stuff with session1
// Do some stuff with session2
tpc_disconnect(session1)
tpc_disconnect(session2)
我看到的主要问题是单个进程只能连接到一个服务,所以我尝试的第一个解决方案是通过使用 ATL 创建一个进程外 COM 服务器来将 DLL 包装器移到一个单独的进程中。我现在遇到的问题是我只获得了一个 COM 服务器实例。
所以我的问题(最后)是否有办法强制创建 ATL COM 服务器的新实例?这是解决问题的最佳方法还是有人能想到更好的方法来解决这个问题。
谢谢杰克逊