如何解决驱动程序 ODBC Oracle 导致 LoadLibrary 出错 ERROR_MOD_NOT_FOUND
我有以下架构:
Program A
=> CreateProcess 'program B'
=> Wait for program B to end
=> sqlConnect
=> Wait for sqlConnect to end
=> CreateProcess 'program B'
=> Wait for program B to end
我的程序 B 是一个非常简单的 exe,基本上只做了一个 LoadLibrary
在sqlConnect之前程序B的LoadLibrary成功
在 sql Connect 之后它失败并显示错误 126 ERROR_MOD_NOT_FOUND
我不知道这里发生了什么。
程序 A 使用 windev 编码,程序 B 使用 C 编码,操作系统为 Windows 10 x64。
我愿意带头。
感谢您的帮助。
解决方法
ODBC 驱动程序调用 SetDllDirectory,这会更改 Windows 正在查找的 dll 路径并导致 LoadLibrary 失败。
显然这个设置是由子进程继承的,即使它没有出现在环境中。
一个简单的解决方法是在子进程开始时调用 SetDllDirectory(NULL)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。