MinGW gcc:无法定位程序输入点libintl_setlocale于动态链接库libintl-8.dll上

本文解决了在使用MinGW gcc环境下,由于路径中存在冲突的libintl-8.dll而导致的编译错误问题。通过调整环境变量PATH或删除冲突DLL来解决。

前两天在windows上装MinGW gcc环境

安装完毕后,我输入gcc -v也可以正常的输出版本信息。


当我正开心的写一个helloworld程序后,编译结果弹出这个错误:


无法定位程序输入点libintl_setlocale于动态链接库libintl-8.dll上。


刚开始想的是可能bin目录下没有libintl-8.dll这个dll吧,但是确实还是存在的。

然后网上很多就说重装吧,然后,我就重装了,但是依然存在这个问题。

所以说,度娘还是不靠谱,只能求助google,就找到了这个帖子,遇到跟我遇到问题类似:

http://stackoverflow.com/questions/7262362/mingw-the-procedure-entry-point-libiconv-could-not-be-located

就是说,path中的文件路径中包含另一个libintl-8.dll,导致as.exe调用的是另一个libintl-8.dll,而不是其本身bin目录中的。


我看了我的目录,里面D:\Program Files\Lua\5.1\clibs里包含了一个libintl-8.dll,而且在path中比D:\Program Files\MinGW\bin要靠前

所以,首先调用的是lua中的clibs,导致的这个问题。

不仅仅是这个dll,也有可能是libiconv-2.dll这个dll。


所以解决方案可以是,在环境变量PATH中,将mingw的bin目录提前。或者删掉包含同样dll的文件夹。



### 问题分析 在使用 Qt 开发程序时,如果出现“无法定位程序输入 _ZdlPvj 于动态链接库 Qt5Core.dll”的错误,通常是因为程序运行时加载了错误版本的动态链接库 (DLL),或者环境变量配置不当导致冲突。根据提供的引用内容[^2]和[^3],可以推测该问题可能与以下因素有关: 1. **MinGW 版本冲突**:用户系统中存在多个 MinGW 安装路径(如 `D:\Professional_Software\MinGW64\bin` 和 Qt 自带的 MinGW),可能导致程序加载了不兼容的 DLL。 2. **环境变量配置错误**:如果 `Path` 环境变量中优先级较高的路径包含与 Qt 不兼容的 DLL,可能会导致此问题。 3. **缺少必要的依赖文件**:引用[1]列出了多个依赖项(如 `libgcc_s_seh-1.dll`、`libstdc++-6.dll` 等),如果这些文件缺失或版本不匹配,也可能引发类似错误。 --- ### 解决方案 #### 1. 检查并调整环境变量 确保 `Path` 环境变量中,Qt 自带的 MinGW 路径(如 `Qt\Qt5.12.0\5.12.0\mingw73_64\bin`)优先于其他 MinGW 路径。可以通过以下步骤完成: - 打开系统属性 -> 高级系统设置 -> 环境变量。 - 在系统变量中找到 `Path`,将 Qt 自带的 MinGW 路径移动到其他 MinGW 路径之前。 #### 2. 使用 Qt 提供的脚本初始化环境 引用[3]提到 `qtenv2.bat` 脚本文件可以正确初始化 Qt 的开发环境。执行该脚本后,所有相关的环境变量会被正确配置。具体操作如下: ```batch C:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin\qtenv2.bat ``` 执行上述命令后,确保当前终端会话中加载了正确的路径和依赖项。 #### 3. 验证依赖项完整性 检查程序运行所需的依赖文件是否完整且版本匹配。引用[1]中列出的文件(如 `libgcc_s_seh-1.dll`、`libstdc++-6.dll` 等)必须存在于 Qt 自带的 MinGW 目录下。如果某些文件缺失或版本不一致,可以从 Qt 官方安装包中重新获取。 #### 4. 使用 Dependency Walker 检测问题 借助工具如 [Dependency Walker](http://www.dependencywalker.com/) 分析可执行文件的依赖关系。通过该工具可以直观地查看哪些 DLL 文件缺失或版本冲突,并针对性地解决问题。 #### 5. 清理缓存和重建项目 有时编译器缓存或生成的临时文件可能导致问题。建议清理项目缓存并重新构建: ```bash # 删除旧的编译输出 rm -rf build/ release/ debug/ # 重新生成 Makefile 并编译 qmake make ``` --- ### 示例代码 以下是一个简单的示例,展示如何在 Qt 中创建一个基本的窗口应用程序并验证其运行是否正常: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget if __name__ == "__main__": app = QApplication(sys.argv) window = QWidget() window.setWindowTitle("Qt Test") window.show() sys.exit(app.exec_()) ``` 确保运行此代码时,环境变量已正确配置,且所有依赖项齐全。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值