-无法找到入口 无法定位程序输入点 ?aboutToDestroy@QWidgetPrivate@@UEAAXXZ于动态链接库 Qt5PrintSupport.dll 上。
【这是错误的】原因分析:
1、我的Qt版本是2013 VS编译得到的;
2、qcustomplot.cpp是在VS2010编译的;
3、将两者link到一起的时候,就会出现这种错误!
这个错误通常是由于 DLL 文件版本不匹配或不兼容引起的。以下是一些可能的解决方案:
确保 DLL 版本匹配:确保 Qt5PrintSupport.dll 和其他 Qt DLL 文件与编译时使用的 Qt 版本完全匹配。不同版本的 Qt DLL 可能会导致这种入口点错误。
检查 Qt 安装路径:确保你的应用程序使用的 DLL 文件来自同一个 Qt 安装路径。混合使用来自不同 Qt 安装的 DLL 文件可能会导致不兼容。
使用 windeployqt 工具:使用 windeployqt 工具来自动复制所有需要的 Qt DLL 文件到你的可执行文件目录。这个工具会确保复制的 DLL 文件与编译时使用的 Qt 版本一致。
在命令行中运行:
2024年10月11日10:31:46
经过重复性的验证,发现上述的原因分析是错误的。真正的原因是:
qcustomplot.cpp是在VS2010的编译选项 与 官方提供的Qt安装包的编译选项不一样 ;
当同步了两者的编译选项后,软件皆可正常启动。
为了验证这件事情,笔者重新利用VS2010编译了整套的QT5.4.2的源码,当编译成功后,和qcustomplot.cpp混合编译,依旧出现aboutToDestroy@QWidgetPrivate@@UEAAXXZ于动态 错误。
当笔者将qcustomplot.cpp的编译选项和QT5.4.2的编译选项保持一致(在CMakeLists.txt)后,问题得到了解决
正确的编译选项应该这样写: ## 设置编译选项 target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Release>:-DWIN64 -DULIB> )