簡體   English   中英

QLibrary:如何從 one.so 文件創建兩個實例?

[英]QLibrary: How to create two instances from one .so file?

QLibrary 可以很好地從 an.so 庫的一個實例中獲取一組 function 指針。 但是,當嘗試從 same.so 文件中獲取 function 指針的兩個不同實例時,它不起作用。 兩組指針都指向 memory 中的相同位置,因此它們是多余的,沒有用處。 根據 Qt 5.12 QLibrary 的文檔:

QLibrary 的多個實例可用於訪問同一個物理庫。

他們沒有說這應該如何工作,那么您是否應該能夠加載帶有兩個 QLibraries 的 same.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

您引用的文本是響應:

QLibrary 的多個實例可用於訪問同一個物理庫。

兩個實例:

QLibrary loader1("lib.so");
QLibrary loader2("lib.so");

但同一個物理圖書館。 所以功能在同一個 memory 位置。

加載庫后,您將使用一個庫。

有一種方法可以滿足您的需求,但不是 Qt。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM