我正在用 C 编写一个程序,但我在使用 libconfig.h 时遇到了问题。因此,我认为如果我的程序可以从 Internet 下载一个外部函数(使用 libcurl.h),并将其作为一个已编译和链接的共享对象来处理,那将是完美的。它需要在所有桌面平台(Windows、Mac 和 Linux)上运行,因此没有 .dll,并且必须由程序下载,作为一个函数处理,然后被程序删除。所以,我的问题是:这在 C 中可能吗?
之所以需要单独下载是因为功能需要定期更新,要求用户定期下载新版本的程序会违背程序的目的。
最佳答案
嗯,最接近你要求的是这个
- 使用 curl 下载 .so/.dll
- 将 .so/.dll 动态加载到您的进程中
- 在您的进程中设置函数指针以指向 .so/.dll 中的函数
在 Windows 上:
HMODULE handle = LoadLibrary("mylib.dll");
if (handle)
myfunc = GetProcAddress(handle, "myfunc");
卸载调用
FreeLibrary(handle)
它减少引用计数,当引用计数达到 0 时,DLL 实际上被卸载。
在 Linux 上,查看这篇文章: How do I load a shared object in C++?
关于c - 有没有可能用C写的程序下载一个外部函数,把这个外部函数当作一个编译链接的共享对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21915299/