gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:16:05 25 4
gpt4 key购买 nike

系统规范:Ubuntu 16.04,基于Qt5.5.1的QtCreator 3.5.1

在一个 C 项目中,我使用 dlopen 和 friend 来加载共享库。该库使用主应用程序中的一些机制。现在,如果我从终端手动编译,一切都会正常。当我使用 QtCreator 构建项目时,从库到主应用程序的调用失败,并出现以下错误:/Programming/C/emme_1/emme_1:符号查找错误:/Programming/C/emme_1/modtest/test.so: undefined symbol :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 是链接器标志,而不是编译标志。您需要将它们移至 QMAKE_LFLAGS

您可以查看最终的链接命令,并验证-rdynamic在其中。一旦你设法到达那里,事情就会再次正常进行。

关于如果我使用 QtCreator 构建,从共享对象到主应用程序的调用会中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56810457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com