动态加载和符号共享

发布于 2024-08-19 17:42:42 字数 232 浏览 6 评论 0原文

我正在尝试通过 dl 加载模块库,以便模块可以从主应用程序访问全局变量。这怎么可能呢?

我从 dlopen 收到一条错误消息,内容为 library/name.so: undefined symbol: ...。使用的唯一标志是:RTLD_NOW

模块本身是使用 libtool 和 -module -avoid-version 构建的。

I'm trying to load a module library via dl in such way, that the module can access globals from the main application. How is that possible to do?

I get an error message from dlopen saying library/name.so: undefined symbol: .... The only flag used is: RTLD_NOW.

The module itself is build with libtool with -module -avoid-version.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤 2024-08-26 17:42:42

答案是:在链接主二进制文件时使用 -Wl,--export-dynamic ,因此所有符号都会自动导出到加载的库中。

同样的问题,只是问得不同:使用 dlopen 加载库时收到“未定义符号”错误

The answer is: use -Wl,--export-dynamic when linking the main binary, so all symbols are automatically exported to the loaded libraries.

Same question, just asked differently: Receive "undefined symbol" error when loading library with dlopen

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文