我有一個C
程序使用兩個libraries
libA和libB。問題是;這兩個庫都有一個編譯器錯誤的list_delete函數。通過編寫這些代碼,我可以成功地編譯和鏈接我的代碼。如何讓庫使用其內部函數以防其他庫中存在相同的函數
#undef list_delete
#define list_delete mysql_list_delete
之後,我可以在我的代碼中調用libA的list_delete函數。但是當我調用libB內部調用list_delete函數的libB的list_delete函數的任何函數(而不是list_delete)時。
爲什麼? libB應該在內部調用list_delete函數而不是libA的list_function。
的問題是我怎麼能告訴libB庫使用它自己的list_delete功能(記住我的程序正在使用力霸的list_delete功能)
您的庫是靜態還是動態的(.dll,.so,.dylib)?一種方法是將libB的'list_delete'聲明爲'static'。這將需要使用它的函數位於相同的編譯單元中,因爲它的符號不會被導出。 – jweyrich 2014-09-05 18:06:28
圖書館是如此。我沒有控制庫,因爲這些是第三方庫 – 2014-09-05 18:15:02