我确信这个问题以前已经解决了,我很好奇它是如何完成的。我有代码,在运行时,我想扫描目录的内容并加载功能。

具体来说,我正在使用脚本引擎,我希望能够添加函数调用。我希望核心引擎提供非常有限的功能。用户应该能够通过第三方库添加其他功能,我希望引擎扫描并加载。这是怎么做到的?

有帮助吗?

解决方案

这取决于平台。在win32上,您调用 LoadLibrary 来加载DLL,然后使用 GetProcAddress 从中获取函数。在Unixy平台上,等价物是 dlopen dlsym

其他提示

您可以使用Linux / UNIX中的POSIX dlopen / dlsym / dlerror / dlclose函数动态打开共享库并访问它们提供的符号(包括函数),请参阅手册页了解详情。

如果你想为此使用库,我建议使用GLib(位于GTK + UI工具包下面的实用程序库)。它的特色是“ GModule "子API,它提供了一种干净,可移植的方法。这样您就不必自己包装相关的调用,并且还可以为您提供任何大小的C程序中非常方便的其余GLIB。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top