为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
函数式编程 2019-08-31 15:00:39
如果我有两个提供相同名称功能的库,我该怎么办?
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

可以使用objcopy --redefine-sym old=new file(参见man objcopy)重命名目标文件中的符号。


然后只需使用新名称调用函数并链接到新的目标文件。


查看完整回答
反对 回复 2019-08-31
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

在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系统支持类似的功能,但我想不出他们的名字。


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 1298 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信