驱动程序 ODBC Oracle 导致 LoadLibrary 出错 ERROR_MOD_NOT_FOUND

Driver ODBC Oracle lead LoadLibrary to error 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

之前SQL连接程序B的LoadLibrary成功

SQL 后连接失败,错误 126 ERROR_MOD_NOT_FOUND

我不知道这里发生了什么。

程序 A 使用 WinDev 编码,程序 B 使用 C 编码,操作系统为 Windows 10 x64。

我愿意带头。

感谢您的帮助。

ODBC 驱动程序调用 SetDllDirectory,更改 windows 查找的 dll 路径并导致 LoadLibrary 失败。

显然这个设置被子进程继承了,即使它没有出现在环境中。

一个简单的解决方法是在子进程开始时调用 SetDllDirectory(NULL)。