64位程序呼叫32位dll的解決方法

2021-06-05 14:26:24 字數 729 閱讀 7082

最近做在windows xp x64,vs2005環境下做32位程式編譯為64位程式的工作,遇到了一些64位程式設計中可能遇到的問題:如內聯彙編(解決方法改為c/c++**),long型別的變化,最關鍵的遇到了64位程序需要呼叫32位dll的問題。由於有一些32位dll沒有源**,無法重新編譯為64位dll,所以只能想辦法解決64位程序呼叫32位dll問題,這個問題讓我很是撓頭了幾天。

驗證:工作流程:

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)

編譯生成。

然後註冊com,*.exe /regserver

最建立乙個64位win32工程驗證64位環境下方法呼叫是否正確,經驗證正確!!!

結論:以上方法可以解決64位程序呼叫32位dll的問題

32位程序呼叫64位dll應該也可以通過這種方法解決,原因64位windows系統下安裝了32位和64位兩套com系統

64位程序呼叫32位dll的解決方法

最近做在windows xp x64,vs2005環境下做32位程式編譯為64位程式的工作,遇到了一些64位程式設計中可能遇到的問題 如內聯彙編 解決方法改為c c long型別的變化,最關鍵的遇到了64位程序需要呼叫32位dll的問題。由於有一些32位dll沒有源 無法重新編譯為64位dll,所以...

64位程序呼叫32位dll的解決方法

在windows7 x64,vs2008環境下做32位程式編譯為64位程式的工作,遇到了一些64位程式設計中可能遇到的問題 如內聯彙編 解決方法改為c c long型別的變化,最關鍵的遇到了64位進 程需要呼叫32位dll的問題。由於有一些32位dll沒有源 無法重新編譯為64位dll,所以只能想辦...

32位程序注入64位程序

include include define makerex w,r,x,b asm emit 0100 w r x b b define rep asm emit 0xf3 pragma pack 1 typedef struct stubargs stubargs,pstubargs pragm...