在加载二进制文件中使用DLL中的代码

没人先生

我目前正在尝试使用QtQPluginLoader来构建插件系统在我将其编译为DLL(.so)的插件中,我需要使用一些编译到主二进制文件中的类(这将加载插件)。

这不起作用,因为在运行时通过QPluginLoader加载将失败,并显示以下错误消息:无法加载库... plugin.so.1.0.0:未定义的符号...

所以这些符号实际上在我的主二进制文件中,并且我想在我的DLL中使用它们。但是为什么这些符号对DLL不可用?是否有可能以某种方式实现这一目标?(希望一些魔术编译标志。)

注意:我可以将主程序的源代码编译到我的DLL中,但这在构建插件系统时听起来很愚蠢

没人先生

编译标志-export-dynamic将解决此问题。这是gcc文档中的描述:

在支持它的目标上,将标志-export-dynamic传递给ELF链接器。这指示链接器将所有符号(不仅是已使用的符号)添加到动态符号表中。对于dlopen的某些用途或为了从程序内部获取回溯,此选项是必需的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Qt中使用QDataStream将自定义结构保存/加载到二进制文件中?

使用kdb +(Q)加载大型二进制文件

在Python中使用二进制文件,分割数字

在 Postgres 中使用 COPY 插入二进制文件

在Python请求中使用数据二进制文件

在 Codelite 中使用 Boost 库二进制文件

如何在二进制文件中使用 seek()?

使用 bazel 构建的二进制文件查看 pprof 中的源代码

从二进制文件中删除未使用的函数

使用StringStream在C ++中读取二进制文件

C#DLL的“ Ngen二进制文件的跳过加载符号”

C中的二进制文件

从二进制文件中读取

将动态加载的二进制文件静态链接为二进制文件

如何将库链接到我的C代码并在Rust二进制文件中使用它?

在Three.js中使用二进制加载器加载对象无法正常工作

从二进制文件加载列表后,我的代码似乎进入了无限循环

LoadLibrary vs加载二进制dll到进程中?

将二进制代码加载到硬件

使用getc()和putc()在C语言中复制文件文本-输出文件中的二进制代码

OpenCV预置二进制文件未安装DLL

为什么“二进制文件”不在原始二进制文件中?

使用MarkLogic REST API将文本文件加载为二进制文件

二进制文件已损坏-如何使用AngularJS下载二进制文件

快速在Matlab中加载大块二进制文件

在启动时加载程序二进制文件

如何从类路径加载ChromeDriver二进制文件?

Java IO,加载和保存二进制文件

OpenCL从二进制文件加载程序