我想使用 gcc 4.7 编译一个 c++ 应用程序,并且该应用程序与使用 gcc 4.4 编译的库链接。我只是想知道没有问题吗?
最佳答案
答案是:这取决于。这并不是真正特定于编译器或系统的。例如,它也适用于 Visual Studio。
基本上,这样做应该不会有任何问题(这是一个相当典型的场景)。
但是,重要的问题是,两个二进制文件之间传递什么样的数据。
例如,如果所有字符串都作为 char *
传递,那么一切都很好。一旦你在某个地方传递了一个 std::string(或者只是一个指针或对一个的引用),那么如果两个文件之间的实现发生变化(例如不同的 STL 实现或只是更改了对齐方式),事情就会中断。
对于其他事物也是如此,甚至是您自己的自定义结构和类。如果界面设计仔细的话,应该不会有任何问题。如果接口(interface)没有考虑这种情况,那么您可能会遇到非常难以或几乎不可能调试的问题(随机崩溃、堆栈对齐问题等)。
关于c++ - 使用 gcc 编译的应用程序与使用不同 gcc 版本编译的库不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29643015/