【发布时间】:2011-03-30 12:06:08
【问题描述】:
我现在有一个让我很困惑的问题: 我有一个用 C++ 编写的软件,并且链接到 C 中的一个库。我使用通常的方法包含头类
extern "C" {
#include <libheader.h>
}
只要我不使用 gcc 的优化,一切正常。一旦我打开偶数 -O1,即第一个优化级别,在运行期间我会收到来自该库的符号的“未定义符号”错误。但是,该名称已经过名称修改,应该由于extern "C" 而被禁用。
调用相关符号的函数是内联的,以防万一。使用的编译器是 gcc 4.4.3。
老实说,我什至不知道要搜索什么,所以如果你们中的某个人能给我一些这种行为的理由,我将不胜感激。
感谢您的支持。
【问题讨论】:
-
你能去掉内联(即使函数不内联),看看它是否开始工作?
-
替代@satuon 的建议,您能否让内联函数调用包装C 函数的C++ 函数,看看它是否开始工作?
-
感谢您的回复!我尝试了这两个建议,但是仍然找不到该符号。
-
在运行时???在 compiled 语言中,runtime 到底怎么会出现“未定义符号”错误?你在使用某种动态库吗?
-
@AndreyT 我认为这是包含另一个共享库的共享库的常见行为。不止一次遇到过这个问题(尽管原因不同)
标签: c++ optimization gcc