如果我使用 QtCreator 构建,从共享对象到主应用程序的调用会中断

Calls from shared object to main app are broken if I build with QtCreator

系统规格:Ubuntu16.04,基于Qt5.5.1的QtCreator 3.5.1

在 C 项目中,我使用 dlopen 和朋友加载共享库。该库使用主应用程序中的一些机器。 现在,如果我从终端手动编译,一切正常。当我使用 QtCreator 构建项目时,从库调用主应用程序失败并出现以下错误: /Programming/C/emme_1/emme_1: 符号查找错误: /Programming/C/emme_1/modtest/test.so: 未定义的符号: pop.这里 pop 是主应用程序中的一个函数,名为 emme_1。请注意,仅当库的函数调用主应用程序中的另一个函数时才会发生错误。如果库的函数是空的并且从应用程序中调用,它就可以工作。

这是我非常简单的 .pro 文件:

QMAKE_CFLAGS += -DTRACE_ASM
QMAKE_CFLAGS += -rdynamic
QMAKE_CFLAGS += -ldl
LIBS +=  /usr/lib/x86_64-linux-gnu/libdl.so

我相信它包含所请求的功能所需的所有内容,但也许我遗漏了一些东西。

I believe it contains all it's needed for the requested functionality, but maybe I'm missing something.

一定遗漏了什么,因为设置不起作用。

请注意 -rdynamic-ldl 是 linker 标志,而不是编译标志。您需要将它们移动到 QMAKE_LFLAGS.

您可以查看最后的link命令,并验证其中的-rdynamic而不是 .一旦你设法做到这一点,事情就会恢复正常。