c++ - 使用 gcc 编译的应用程序与使用不同 gcc 版本编译的库不同

标签 c++ linux gcc compilation

我想使用 gcc 4.7 编译一个 c++ 应用程序,并且该应用程序与使用 gcc 4.4 编译的库链接。我只是想知道没有问题吗?

最佳答案

答案是:这取决于。这并不是真正特定于编译器或系统的。例如,它也适用于 Visual Studio。

基本上,这样做应该不会有任何问题(这是一个相当典型的场景)。

但是,重要的问题是,两个二进制文件之间传递什么样的数据。

例如,如果所有字符串都作为 char * 传递,那么一切都很好。一旦你在某个地方传递了一个 std::string(或者只是一个指针或对一个的引用),那么如果两个文件之间的实现发生变化(例如不同的 STL 实现或只是更改了对齐方式),事情就会中断。

对于其他事物也是如此,甚至是您自己的自定义结构和类。如果界面设计仔细的话,应该不会有任何问题。如果接口(interface)没有考虑这种情况,那么您可能会遇到非常难以或几乎不可能调试的问题(随机崩溃、堆栈对齐问题等)。

关于c++ - 使用 gcc 编译的应用程序与使用不同 gcc 版本编译的库不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29643015/

相关文章:

c++ - 放置复杂物体

linux - Unix命令获取没有基本名称的文件路径

c++ - 在c++中安排头文件

c++ - 如何为多种 C++ 类型创建编译时检查?

c++ - 完美转发使用结构化绑定(bind)声明的变量

mysql - play framework - 连接linux mysql

python - Sublime text 和 Linux-KDE。系统区域设置设置为无法处理非 ASCII 字符的值

c++ - 在多线程应用程序中,我将如何使用原子内置函数来设置/查看 time_t 值?

c++ - C 编译 : error: stray '\4' in program ; octal flow?

c++ - 为什么即使链接了适当的 .lib,此 C++ 项目仍无法构建?