QLibrary可以很好地从.so库的一个实例中获得一组函数指针。但是,当试图从同一个.so文件获取两个不同的函数指针实例时,它无法工作。这两组指针指向内存中相同的位置,因此它们是多余的,没有用处。根据QT5.12的QLibrary文档:
多个QLibrary实例可用于访问相同的物理库。
他们没有说明这是如何工作的,所以您应该能够用两个QLibraries加载同一个QLibraries文件的两个实例吗?还是我误会了,你真的需要两个相同库文件的副本?
下面的代码是为了防止我的解释不清楚:
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发布于 2020-07-20 19:46:38
您引用的文本是答复:
多个QLibrary实例可用于访问相同的物理库。
有两种情况:
QLibrary loader1("lib.so");
QLibrary loader2("lib.so");但是同一个物理图书馆。因此,函数位于相同的内存位置。
加载库后,您将使用一个库。
有一个way可以满足您的需要,但它不是Qt。
https://stackoverflow.com/questions/63002447
复制相似问题