奇怪的ODBC异常

调试一个ODBC链接oracle的程序,居然发现SQLConnect就会造成Access vilation的异常访问。ODBC管理工具里面测试链接一切正常。
这段代码曾经在另外一个机器上测试过。


研究很久之后,突然想起,exe所有目录下有几个oracle的dll。把程序copy到另外的目录下,运行,果然不出错了。


用Process Explorer分析一下,发现和猜测一样,ODBC在装载的时候,有几个dll是从exe的目录下装载的,而不是oracle安装目录下的。


这符合windows的原则,系统会有限检查exe目录下的dll。


把oracle安装目录中的同名dll拷贝过来,再运行,就没有问题。




除了我们直接调用的dll之外,一定要考虑系统隐藏调用的dll,避免再次陷入dll陷阱。

你可能感兴趣的:(oracle,windows,测试,dll,Access,exe)