QLibrary:如何从一个 .so 文件创建两个实例?
QLibrary: How to create two instances from one .so file?
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");
但同一个实体图书馆。所以函数在同一个内存位置。
加载库后,您将使用一个库。
有一个 可以满足您的需求,但它不是 Qt。
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");
但同一个实体图书馆。所以函数在同一个内存位置。
加载库后,您将使用一个库。
有一个