最近做在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...