我正在 Windows 机器上的 MSYS2 中使用
make
构建一个纯 C 项目。 生成的可执行文件在 MSYS2 提示符下运行得很好,但是当使用 CMD 时它会失败,因为它找不到 libpq.dll
(我的代码正在与 postgres DB 通信)。
我使用pacman在MSYS2上安装了postgres,所以它安装在平常的地方。 代码编译时没有任何警告(并且我启用了很多警告),并且在 MSYS2 上正确运行,因此我确信代码是正确的。 这是有问题的构建。
为什么可执行文件在使用 CMD 调用时可能无法找到 DLL,即使它在 MSYS 提示符下工作? 我可以做什么来调查和/或解决这个问题?
编辑: 一位用户善意地指出这个问题与this one非常相似。 我知道我的问题可能与可以更改的环境变量有关,或者可能与将 MSYS2 dll 复制到特定位置有关,但我对 Windows 缺乏经验,并且希望得到这方面的指导。
原来问题与PATH变量有关。
可执行文件已成功与 MSYS2 中搜索路径上的 DLL 链接,但系统的 PATH 变量(用于 cmd 实用程序的变量)不包含此文件夹。 修复此问题可以成功执行代码。