【发布时间】:2016-09-04 15:13:16
【问题描述】:
我通过How to load a dynamic library on demand from a C++ function/Qt method
似乎我们必须在运行时加载共享库。我们总是编写代码来解析共享对象中的函数/符号名称,使用
1) dlsym ,如果我们在运行时使用 dlopen 加载共享库。或者
2) How to load a dynamic library on demand from a C++ function/Qt method中提出的其他技术
3) 由于我的共享库将有数百万个符号/函数,例如我的共享库有函数
fun1() , fun2 ..... fun1000000
是否有任何直接的方法,我们不需要编写任何代码来解析函数/符号名称,只需在加载共享库后直接从共享库函数中调用函数。
我正在寻找的算法
void loadSharedObject() {
//load the
// Call the function names directly
// no extra code for resolving the function /symbols names
// for example
fun1()
fun2()
}
【问题讨论】:
-
如果你的库嵌入了
QObject,你可以使用它的元对象机制来获取和调用它的函数。否则,您必须解析 ELF 结构(Linux 上的 readelf)并使用 dlsym(这可能很棘手)。 -
你为什么要关心这些?你想解决什么问题?你似乎在打一场似乎没有其他人在打的艰苦战斗,这对你来说是不是敲响了警钟?你太努力了。这是不必要的。
标签: qt linker tcl shared-libraries system-calls