驱动程序 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)。
我有以下架构:
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)。