4
我移植的ODBC
駕駛員Windows
到Linux
。
驅動程序寫在C
。
的方式ODBC
作品上Linux
是,應用程序對一個ODBC管理器(ODBCM
),這反過來加載相應的驅動程序並傳遞函數調用的調用。功能名稱衝突在共享對象
假設我的驅動程序被編譯到共享對象中,它暴露了兩個函數A
和B
。
什麼是應該發生的是ODBCM
是調用函數A
,和功能A
是調用函數B
。
什麼是實際發生的是,當函數A
調用函數B
代替函數B'
(其具有相同的名稱作爲B
,位於libodbc
共享對象,並通過使用Linux
應用ODBC
加載)被調用。
我覺得自己好像應該是編譯時間標誌,或後編譯庫修改工具,將解決此問題。
目前我經歷的庫中的一個函數在同一時間執行以下操作:
_B(){ // rename old functions
...
}
B() { // add new wrapper function
return _B(); // which just calls old
}
_A() {
...
_B(); // Change calls to renamed functions
...
}
這是緩慢的改變,感覺缺憾。
這解決了問題!謝謝,爲我節省了大量的時間手動重命名函數和編寫包裝。 – TheGeneral 2011-01-28 19:15:41