之前已经将ODBC封装成了一个完整的类,之后需要将其封装为动态库文件。这样做的好处是只需要提供头文件及lib,dll文件,不需要提供具体函数的实现。
上午一顿操作,没注意把之前下载的ODBC驱动的相关文件给删了,导致在控制面板也删不掉ODBC的数据源,重新安装了instantclient-basic-nt-11.2.0.3.0 及 instantclient-odbc-win32-11.2.0.1.0之后,ODBC驱动居然报错,整了半天并参考了 http://www.iyunv.com/thread-39955-1-1.html。安装了vcredist_x86终于好用了。
项目菜单--项目属性(最后一个)--配置属性--常规--项目默认值--字符集,(Project-> Properties-> Configurations Properties-> General-> Project Defaults-> Charater Set)将使用Unicode字符集改为未设置即可。
上午一顿操作,没注意把之前下载的ODBC驱动的相关文件给删了,导致在控制面板也删不掉ODBC的数据源,重新安装了instantclient-basic-nt-11.2.0.3.0 及 instantclient-odbc-win32-11.2.0.1.0之后,ODBC驱动居然报错,整了半天并参考了 http://www.iyunv.com/thread-39955-1-1.html。安装了vcredist_x86终于好用了。
下午简单百度了下把类封装成动态库的例子,参考 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29121609&id=3851844,于是准备把之前的ODBC类封装起来。但这时又出现了问题(本人C++功底薄弱):之前的ODBC类是在VS2013空项目里面写的,这次放到了win32 dll里面,程序本身居然报错(连接函数参数类型出错),于是按照要求的参数类型改了改,生成了动态库文件,但是运行时却无法连接数据库,connect函数直接return -1,这个问题耽误了很久,最后在论坛的大神处得到答案:
项目菜单--项目属性(最后一个)--配置属性--常规--项目默认值--字符集,(Project-> Properties-> Configurations Properties-> General-> Project Defaults-> Charater Set)将使用Unicode字符集改为未设置即可。
至此,问题解决,将头文件,lib,dll放到工程下即可。
转自知乎