我們正在將32位C++應用程序遷移到64位應用程序(VS 2010)。這個應用程序是10年前用於Windows的IBM VisualAge C++ 3.6.5開發的。由於IBM已停止支持該編譯器,因此我們在將其遷移到VS 2010時遇到問題。從IBM VisualAge C++ 3.6.5遷移到VS 2010
這主要是由於某些缺少的庫。
樣本錯誤:
錯誤LNK2019:解析外部符號__uopen在函數引用 「INT __cdecl allocate_heap_storage_(無效)」(allocate_heap_storage @@ YAHXZ?) 錯誤LNK2019:解析外部符號__ucreate在函數引用「 INT __cdecl allocate_heap_storage_(無效)」(allocate_heap_storage @@ YAHXZ?) 錯誤LNK2019:在函數引用解析外部符號__udestory 「INT __cdecl deallocate_heap_storage_(無效)」(deallocate_heap_storage @@ YAHXXZ?) 錯誤LNK2019:解析外部符號__uclose中引用函數「int __cdecl deallocate_heap_storage_(void)」(?deallocate_he ap_storage @@ YAHXXZ) 錯誤LNK2019:在函數引用解析外部符號__umalloc 「INT __cdecl alloc_share_mem_(INT,INT)」(alloc_share_mem @ YAPAXHH @ Z)
上述功能在umalloc.h定義,但我們錯過了定義。
我們該如何解決?
有沒有可能是你沒有搭建的源? –
有趣的是,你甚至可能無法合法地爲這些函數重新實現用戶堆庫('libhu.a') - 它似乎已獲得專利:http://www.ptodirect.com/Patents/ 6816956我會認爲有很多涵蓋這種事情的現有技術。如果沒有別的,Win32自WinNT 3.5以來支持多個進程級別的堆(我認爲這是Cutler等人從VMS借來的)。 –