从IBM VisualAge C++3.6.5迁移到VS 2010

Migration from IBM VisualAge C++ 3.6.5 to VS 2010

本文关键字:迁移 VS 2010 IBM VisualAge C++3      更新时间:2023-10-16

我们正在将32位C++应用程序迁移到64位应用程序(VS 2010)。该应用程序是在10年前使用IBM VisualAge C++3.6.5 for Windows开发的。由于IBM已经停止了对该编译器的支持,我们在将其迁移到VS2010时遇到了问题。

这主要是因为缺少一些库。

样本错误:

错误LNK2019:函数"int__cdecl allocate_heap_storage_(void)"中引用了未解析的外部符号__uopen(?allocate_heap_storage@@YAHXZ)错误LNK2019:函数"int __cdecl allocate_heap_storage_(void)"中引用的未解析外部符号__ucreate(?allocate_hheap_storage@@YAHXZ)错误LNK2019:函数"int __cdecl deallocate_heap_storage_(void)"中引用的未解析外部符号__udestory(?deallocate_heap_storage@@YAHXXZ)错误LNK2019:函数"int __cdecl deallocate_heap_storage_(void)"中引用的未解析外部符号__uclose(?deallocate_heap_storage@@YAHXXZ)错误LNK2019:函数"int __cdecl alloc_share_mem_(int,int)"中引用的未解析外部符号__umalloc(?alloc_share_mem@YAPAXHH@Z)

上面的函数是在umalloc.h中定义的,但我们缺少这些定义。

我们如何解决这个问题?

对于上面的错误,链接时找不到这些函数"_ucreate"、_udestory、_uclose、_umalloc",我认为这些函数都在Visual Age提供的运行时库中。若你们能找到这些运行时库的lib文件,你们可以把它们放在链接的输入中,它可能会通过编译阶段,但可能无法启动。

这里的一个建议是用windows函数替换上面的函数。以上所有函数都与内存分配有关。