0

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

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

示例错误:

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

上述函数在 umalloc.h 中定义,但我们缺少定义。

我们如何解决这个问题?

4

1 回答 1

0

对于上面的错误,链接时没有找到“ _ucreate”、_ udestory、_uclose、 _umalloc这些函数,我认为这些函数在Visual Age提供的运行时库中。如果你能找到这些的lib文件运行时库,你可以将它们放在链接的输入中,它可能会通过编译阶段,但可能无法启动。

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

于 2012-11-19T09:16:08.977 回答