如果我有兩個提供相同名稱功能的庫,我該怎么辦?
3 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
可以使用objcopy --redefine-sym old=new file(參見man objcopy)重命名目標文件中的符號。
然后只需使用新名稱調用函數并鏈接到新的目標文件。

梵蒂岡之花
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系統支持類似的功能,但我想不出他們的名字。
- 3 回答
- 0 關注
- 1333 瀏覽
添加回答
舉報
0/150
提交
取消