gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:12:27 28 4
gpt4 key购买 nike

QLibrary可以很好地从.so库的一个实例中获取一组函数指针。但是,当尝试从同一个.so文件中获取函数指针的两个不同实例时,它不起作用。两组指针均指向内存中的相同位置,从而使其变得多余且无用。根据Qt 5.12 QLibrary的文档:

Multiple instances of QLibrary can be used to access the same physical library.


他们没有说这应该如何工作,那么您是否应该能够使用两个QLibraries加载同一.so文件的两个实例?还是我误会了,您确实需要同一个库文件的两个副本?
以下代码,以防我的解释不清楚:
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

最佳答案

您引用的文本是响应:

Multiple instances of QLibrary can be used to access the same physical library.


两个实例:
QLibrary loader1("lib.so");
QLibrary loader2("lib.so");
但使用相同的物理库。因此功能位于相同的存储位置。
加载库后,您将使用一个库。
有一个 way可以满足您的需求,但它不是Qt。

关于c++ - QLibrary:如何从一个.so文件创建两个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63002447/

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