我确信这个问题以前已经解决了,我很好奇它是如何完成的。我有代码,在运行时,我想扫描目录的内容并加载功能。
具体来说,我正在使用脚本引擎,我希望能够添加函数调用。我希望核心引擎提供非常有限的功能。用户应该能够通过第三方库添加其他功能,我希望引擎扫描并加载。这是怎么做到的?
答案 0 :(得分:6)
这取决于平台。在win32上,您调用LoadLibrary
加载DLL,然后使用GetProcAddress
从中获取函数。在Unixy平台上,等价物是dlopen
和dlsym
。
答案 1 :(得分:4)
您可以使用Linux / UNIX中的POSIX dlopen / dlsym / dlerror / dlclose函数动态打开共享库并访问它们提供的符号(包括函数),有关详细信息,请参阅man page。
答案 2 :(得分:3)
如果你想为此使用库,我建议使用GLib(位于GTK + UI工具包下面的实用程序库)。它具有“GModule”子API,它提供了一种干净,可移植的方式。这样您就不必自己包装相关的调用,并且还可以为您提供任何大小的C程序中非常方便的其余GLIB。