[英]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.