GCC优化在运行时产生"未定义的符号"

Thi*_*ilo 6 c++ optimization gcc

我现在有一个让我感到困惑的问题:我有一些用C++编写的软件,它链接到C中的库.我使用通常的头文件类

extern "C" {
    #include <libheader.h>
}
Run Code Online (Sandbox Code Playgroud)

只要我不使用gcc的优化,一切正常.一旦我打开偶数-O1,即第一个优化级别,在运行期间我得到一个来自该库的符号的"未定义符号"错误.但是,该名称已经过了名称重整,应该是禁用的原因extern "C".

如果这很重要,则会内联调用有问题符号的函数.使用的编译器是gcc 4.4.3.

老实说,我甚至不知道要搜索什么,所以如果你们中的一个人能给我一些这种行为的理由,我将非常感激.

感谢您的支持.

Mar*_*k B 1

定义调用内联函数的标头是否可能包含没有包装器的库标头extern "C",并且在其他任何地方都使用包装器行?

你尝试过其他级别吗-O2

您是否尝试过取消内联您的函数?