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