如果两个库提供具有相同名称的函数产生冲突,我该怎么办?

如果我有两个提供相同名称功能的库,我该怎么办?



函数式编程
浏览 1299回答 3
3回答

互换的青春

可以使用objcopy --redefine-sym old=new file(参见man objcopy)重命名目标文件中的符号。然后只需使用新名称调用函数并链接到新的目标文件。

梵蒂冈之花

在Windows下,您可以使用LoadLibrary()将其中一个库加载到内存中,然后使用GetProcAddress()获取需要调用的每个函数的地址,并通过函数指针调用函数。例如HMODULE lib = LoadLibrary("foo.dll");void *p = GetProcAddress(lib, "bar");// cast p to the approriate function pointer type (fp) and call it(*fp)(arg1, arg2...);FreeLibrary(lib);将获取foo.dll中名为bar的函数的地址并调用它。我知道Unix系统支持类似的功能,但我想不出他们的名字。
打开App,查看更多内容
随时随地看视频慕课网APP