C++ QLibrary:如何从一个.so文件创建两个实例?
QLibrary可以从.so库的一个实例中获得一组函数指针。但是,当试图从同一个.so文件中获取两个不同的函数指针实例时,它不起作用。这两组指针都指向内存中相同的位置,这使得它们冗余且没有用处。根据Qt 5.12 QLibrary的文档:C++ QLibrary:如何从一个.so文件创建两个实例?,c++,qt,function-pointers,multiple-instances,qlibrary,C++,Qt,Function Pointers,Multiple Instances,Qlibrary,QLibrary可以从.so库的一个实例中获得一组函数指针。但是,当试图从同一个.so文件中获取两个不同的函数指针实例时,它不起作用。这两组指针都指向内存中相同的位置,这使得它们冗余且没有用处。根据Qt 5.12 QLibrary的文档: QLibrary的多个实例可用于访问同一物理库 他们没有说明这应该如何工作,所以您是否应该能够加载两个具有两个QLibraries的相同.so文件的实例?还是我误解了,你真的需要同一个图书馆文件的两份副本 如果我的解释不清楚,请输入以下代码: QLibrary
QLibrary的多个实例可用于访问同一物理库 他们没有说明这应该如何工作,所以您是否应该能够加载两个具有两个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
qlibraryloader1(“lib.so”);
loader1.load();
foo1=重新解释(loader1.resolve(“foo”);
foo1();
QLibrary loader2(“lib.so”);
loader2.load();
foo2=重新解释(loader2.resolve(“foo”);
foo2();
//foo1和foo2都调用foo函数的同一个实例,而不是单独的实例
您引用的文本是响应:
QLibrary的多个实例可用于访问同一物理库 两个例子:
QLibrary loader1("lib.so");
QLibrary loader2("lib.so");
但是相同的物理库。因此,这些函数位于相同的内存位置
加载库后,您将使用一个库
有一个库可以满足您的需要,但它不是Qt。“可以使用QLibrary的多个实例”意味着,如果您使用库a,并且它确实
QLibrary(“libcrypto.so”)
,那么它将不会破坏同样具有QLibrary(“libcrypto.so”)功能的库B
这并不意味着QLibrary对象的每个实例都会产生单独的代码。。。。事实上,这就是为什么。所以(共享对象)是为了防止。我担心会是这样。我将看看是否可以重写我的库,使其在内部更通用。谢谢