我有第三方DLL需要使用LoadLibrary()動態加載,並使用__cdecl調用約定。我需要能夠使用VB6的DLL,所以我創建了一個我自己的包裝器DLL,它使用__stdcall調用約定並導出所需的函數。包裝第三方DLL
現在已經有了一個額外的要求,我正在努力看到如何管理;包裝的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創建一個Out-Of-Process COM服務器來將DLL包裝移出到單獨的進程。我現在遇到的問題是我只能得到一個COM服務器的單個實例。
所以我的問題(最後)是有沒有辦法強制創建一個ATL COM服務器的新實例?這是解決問題的最佳方法,還是有人可以想出更好的方法來解決這個問題。
感謝傑克遜
完成實現包裝 - 我嘗試使用CreateHardLink而不是一個副本,但它沒有爲我工作,所以最後與完整的副本的DLL。 – Jackson 2009-04-24 15:41:54