У меня есть сторонняя DLL, которая должна быть загружена динамически с помощью LoadLibrary () и которая использует соглашение о вызовах __cdecl. Мне нужно иметь возможность использовать dll из VB6, поэтому я создал собственную 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)
Основная проблема, как я вижу, заключается в том, что один процесс может быть подключен только к одному сервису, поэтому первое решение, которое я попытался, - это перенести оболочку DLL в отдельный процесс путем создания сервера COM вне процесса используя ATL. Теперь у меня проблема в том, что я получаю только один экземпляр COM-сервера.
Итак, мои вопросы (наконец-то): есть ли способ заставить новый экземпляр COM-сервера ATL быть создан? Это лучший подход к проблеме или кто-то может придумать лучший способ решения этой проблемы.
Спасибо, Джексон