首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLibrary:如何从一个.so文件创建两个实例?

QLibrary:如何从一个.so文件创建两个实例?
EN

Stack Overflow用户
提问于 2020-07-20 19:19:43
回答 1查看 166关注 0票数 1

QLibrary可以很好地从.so库的一个实例中获得一组函数指针。但是,当试图从同一个.so文件获取两个不同的函数指针实例时,它无法工作。这两组指针指向内存中相同的位置,因此它们是多余的,没有用处。根据QT5.12的QLibrary文档:

多个QLibrary实例可用于访问相同的物理库。

他们没有说明这是如何工作的,所以您应该能够用两个QLibraries加载同一个QLibraries文件的两个实例吗?还是我误会了,你真的需要两个相同库文件的副本?

下面的代码是为了防止我的解释不清楚:

代码语言:javascript
复制
QLibrary loader1("lib.so");
loader1.load();
foo1 = reinterpret_cast<foo>(loader1.resolve("foo"));
foo1();

QLibrary loader2("lib.so");
loader2.load();
foo2 = reinterpret_cast<foo>(loader2.resolve("foo"));
foo2();

// foo1 and foo2 both call the same instance of the foo function instead of separate instances
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-20 19:46:38

您引用的文本是答复:

多个QLibrary实例可用于访问相同的物理库。

有两种情况:

代码语言:javascript
复制
QLibrary loader1("lib.so");
QLibrary loader2("lib.so");

但是同一个物理图书馆。因此,函数位于相同的内存位置。

加载库后,您将使用一个库。

有一个way可以满足您的需要,但它不是Qt。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63002447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档