工作流程:
1.建立一個程序外COM伺服器(EXE)。
2.將32位dll的介面函式封裝為COM伺服器的相關介面。
3.註冊COM伺服器*.exe /regserver (登出 *.exe /unregserver)。
4.64位程序呼叫32位COM伺服器介面,成功。從而曲線實現了64位程序呼叫32位dll。 具體步驟: 我首先建立了一個簡單的dll工程,只輸出一個函式int c = add(int a,int b); 生成lib和dll 然後建立一個程序外COM(EXE型別),內部連結dll,新增方法Method: Add(long *c) { *c = add(1,2);}編譯生成。 然後註冊COM,*.exe /regserver 最建立一個64位WIN32工程驗證64位環境下方法呼叫是否正確,經驗證正確!!! 結論:以上方法可以解決64位程序呼叫32位dll的問題 32位程序呼叫64位dll應該也可以透過這種方法解決,原因64位windows系統下安裝了32位和64位兩套COM系統
工作流程:
1.建立一個程序外COM伺服器(EXE)。
2.將32位dll的介面函式封裝為COM伺服器的相關介面。
3.註冊COM伺服器*.exe /regserver (登出 *.exe /unregserver)。
4.64位程序呼叫32位COM伺服器介面,成功。從而曲線實現了64位程序呼叫32位dll。 具體步驟: 我首先建立了一個簡單的dll工程,只輸出一個函式int c = add(int a,int b); 生成lib和dll 然後建立一個程序外COM(EXE型別),內部連結dll,新增方法Method: Add(long *c) { *c = add(1,2);}編譯生成。 然後註冊COM,*.exe /regserver 最建立一個64位WIN32工程驗證64位環境下方法呼叫是否正確,經驗證正確!!! 結論:以上方法可以解決64位程序呼叫32位dll的問題 32位程序呼叫64位dll應該也可以透過這種方法解決,原因64位windows系統下安裝了32位和64位兩套COM系統