![](/img/trans.png)
[英]Is it possible to use 64-bit instruction in a 32-bit application on intel/64-bit win7
[英]LoadLibrary Problem on Win7 (64-bit)
我使用vs2005開發了MFC Regular DLL“靜態鏈接”。 當它編譯為32位DLL時
我可以使用“ LoadLibrary”從我的計算機或任何其他計算機上加載它。
但是當將其編譯為64位DLL時,我只能從我的計算機上加載它。
我查看了我的代碼並發現了聲明的全局對象。
MyClass myObj;
當我評論該對象時..我可以加載DLL並從其他機器上使用它。
找到全局對象...我無法從diffrenet機器加載DLL。
有人可以幫幫我嗎?
當我嘗試使用“GetLastError”時,它返回的數字如“-529697949”
錯誤代碼是0xe06d7363,最后3個十六進制數字拼寫為“MSC”。 這是Microsoft編譯器中C ++異常的異常代碼。
您的代碼正在轟炸未捕獲的C ++異常,可能是DllMain()中拋出的異常。 如果您無法從此提示中對其進行反向工程,則需要調試器。
創建/分配/初始化dll的全局/靜態對象(這是DllMain的一部分)時,也可能引發未捕獲的C ++異常。 所以很有可能在代碼中的某個地方有一個有效的throw語句負責這種行為(而不是某些編譯器/體系結構/平台錯誤;也許它只是一個特定於x64的定義?)。
要找到那個討厭的小*#!!:
由於缺少強制執行的“throws”語句,例如在Java中(在c ++中它是可選的並且相當無用;請參閱函數簽名中的Throw關鍵字 ),try / catch / throw系統幾乎不可用於創建健壯且可維護的代碼; 它幾乎就像隨處可見隱藏的冒險。
目標計算機是否已安裝64位Visual C ++ 2005 redistibutable? 他們可能從其他應用程序安裝了32位版本但是從未安裝過64位版本?
請參閱http://www.microsoft.com/downloads/en/details.aspx?FamilyID=90548130-4468-4bbc-9673-d6acabd5d13b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.