我需要为我们的项目升级编译器(非常旧的代码,从g ++ 2.0到4.0)。但是,我们的项目使用了一些第三个库(只拥有二进制文件)。 我必须使用新的编译器重建它们,否则我仍然可以直接调用旧的二进制文件。
任何人都知道这一点,请善待我。
谢谢
答案 0 :(得分:1)
它不起作用:
[1]«GNU C ++编译器使用从版本3开始的行业标准C ++ ABI»http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
[2] http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-fabi-version-144
答案 1 :(得分:0)
这完全取决于如何定义第三方库的API。
如果(例如)内存在库中分配并在代码中释放,意味着可能会使用两个版本的C运行时,那么您将崩溃。
所以可以肯定的是,您需要研究所有导出函数的行为。这可能是不可能的。
我可以建议为所有API函数构建测试或考虑完全删除第三方库。