【问题标题】:Driver ODBC Oracle lead LoadLibrary to error ERROR_MOD_NOT_FOUND驱动程序 ODBC Oracle 导致 LoadLibrary 出现错误 ERROR_MOD_NOT_FOUND
【发布时间】:2021-07-02 13:02:09
【问题描述】:

我有以下架构:

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。

我愿意带头。

感谢您的帮助。

【问题讨论】:

  • 检查并比较您的环境,尤其是第一次和第二次调用之间的路径
  • @SayanMalakshinov 感谢您的回复。我确实使用 _getcwd 函数检查了路径,它们是相同的。发送到 LoadLibrary 的路径也是相同的。你有别的想法吗?

标签: windows oracle dll loadlibrary


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2013-08-14
    • 2011-11-12
    相关资源
    最近更新 更多