qt无法定位程序输入点_z21qRegeisterResourceDataiPKhS0_S0于动态链接库Qt5Core.dll

在使用Qt编写上位机并生成Release版本的exe程序时,遇到“Qt无法定位程序输入点_z21qRegeisterResourceDataiPKhS0_S0于动态链接库Qt5Core.dll”的错误。通过DependencyWalker检查发现缺少必要的dll文件,调整环境变量后问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下自己在解决过程印象比较深刻的问题。

我在使用Qt编写上位机时,使用Qt生成Release版本.的exe程序,在执行过程中提示“Qt无法定位程序输入点_z21qRegeisterResourceDataiPKhS0_S0于动态链接库Qt5Core.dll“这个问题。网上搜索了环境变量的设置方法(后来发现的确是这个问题)。始终提示上述错误并且不能执行。

直到顺着一篇篇文章看到这篇文章https://blog.youkuaiyun.com/lsq2902101015/article/details/46911457,将里面的工具Dependency Walker下载了下来。果然看到自己的exe程序缺少一些dll文件(黄色冒号指示缺少)。少了就说明之前环境变量配错了,于是在安装qt软件的文件夹中搜索相关的dll文件,例如Qt5Core.dll。结果竟然发现D:\Qt\Qt5.9.8\Tools\QtCreator\bin和
D:\Qt\Qt5.9.8\5.9.8\mingw53_32\bin目录中都存在上述dll文件。

于是尝试更换变量路径,试了一下发现可以了,问题解决。

/media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so(_Z29simGetInt32Parameter_internaliPi+0x2da)[0x7f08796d868a] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_ZN16CPluginContainer9addPluginEPKcS1_+0x3df)[0x7f19a16c4eaf] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libsimExtCustomUI.so(_Z21simGetInt32ParameterEi+0x29)[0x7f086e281f19] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_Z11_segHandleri+0x30)[0x7f1e62d81ae0] /lib/x86_64-linux-gnu/libc.so.6(+0x43090)[0x7f1eb7868090] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libsimExtCustomUI.so(simStart+0xdc)[0x7f086e25b6ac] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_ZN9CUiThread27__executeCommandViaUiThreadEP16SUIThreadCommandS1_+0x247a)[0x7f19a165479a] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so(_Z29simGetInt32Parameter_internaliPi+0x2da)[0x7f1c7098668a] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_ZN7CPlugin4loadEv+0xa7)[0x7f0a6d491e17] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libsimExtCustomUI.so(_Z21simGetInt32ParameterEi+0x29)[0x7f1c6149ef19] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_ZN9CUiThread25executeCommandViaUiThreadEP16SUIThreadCommandS1_+0x3d)[0x7f19a165519d] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libsimExtCustomUI.so(simStart+0xdc)[0x7f1c614786ac] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_ZN16CPluginContainer9addPluginEPKcS1_+0x3df)[0x7f0a6d499eaf] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_Z22simLoadModule_internalPKcS0_+0x3fc)[0x7f19a14f872c] /media/dell/XNW/coppeliasim/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04/libcoppeliaSim.so.1(_ZN7CPlugin4loadEv+0xa7)[0x7f1e62f49e17] /media/dell/XNW/coppeli
最新发布
03-22
<think>嗯,用户提到的问题是关于在CoppeliaSim Edu V4.1.0 Ubuntu20.04环境下调试simGetInt32Parameter和插件加载的问题。我需要先理解这些组件之间的关系以及可能的问题。 首先,用户提到了libcoppeliaSim.so这个共享库,这应该是CoppeliaSim的核心库。simGetInt32Parameter_internal可能是一个内部函数,用于获取仿真参数。而_segHandler可能涉及到段错误(segmentation fault)的处理。CPluginContainer和addPlugin可能与插件的加载和管理有关。 接下来,用户可能在尝试开发或调试一个自定义插件时遇到了问题。可能的问题包括插件加载失败、函数调用错误或者运行时崩溃(如段错误)。需要检查插件的编译是否正确,符号是否正确导出,以及版本兼容性。 根据用户提供的引用,PKG_CONFIG_PATH的设置可能与库的查找路径有关。需要确保libcoppeliaSim.so所在的路径被正确包含在动态链接器的搜索路径中,比如通过LD_LIBRARY_PATH环境变量。此外,插件的编译参数是否正确,比如是否链接了正确的库,头文件路径是否正确。 调试段错误通常需要使用gdb,查看堆栈跟踪以确定崩溃的位置。检查是否在调用simGetInt32Parameter时传入了无效的参数,比如错误的句柄或参数ID。此外,插件的初始化和卸载过程是否有问题,比如资源未正确释放。 可能还需要检查CoppeliaSim的日志信息,查看是否有加载插件时的错误提示。插件是否实现了必要的接口函数,如initPlugin和cleanupPlugin。符号可见性问题也可能导致函数未找到,使用nm工具检查插件是否导出了必要的符号。 总之,需要系统性地检查编译、链接、环境变量、函数参数和日志信息,逐步排除可能的问题。</think>### CoppeliaSim插件调试分析 #### 1. 环境配置验证 首先检查`PKG_CONFIG_PATH`是否包含CoppeliaSim的库路径。根据引用配置: ```bash PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH ``` 同时需确认动态库路径已添加到`LD_LIBRARY_PATH`: ```bash export LD_LIBRARY_PATH=/path/to/coppeliaSim/libs:$LD_LIBRARY_PATH ``` 若未配置,可能导致插件加载失败或符号未定义错误[^1]。 #### 2. simGetInt32Parameter_internal调试 此函数通常与仿真参数获取相关。常见问题包括: - **参数ID错误**:检查传入的`parameterID`是否符合[官方文档](https://www.coppeliarobotics.com/helpFiles/en/apiFunctions.htm#simGetInt32Parameter)定义。 - **对象句柄无效**:确保第一个参数为有效场景对象句柄(如`sim_handle_scene`)。 调试建议: ```cpp int result = simGetInt32Parameter_internal(parameterID, &value); if (result == -1) { simAddLog("Plugin", sim_verbosity_errors, "无效参数ID: %d", parameterID); } ``` #### 3. 插件加载问题分析 `CPluginContainer::addPlugin`的典型故障场景: - **符号未导出**:插件必须实现`initPlugin`和`cleanupPlugin`函数,并通过`extern "C"`声明: ```cpp extern "C" { void initPlugin(SimHandle h, struct SSimLink* link); void cleanupPlugin(); } ``` - **版本不匹配**:确保插件与CoppeliaSim V4.1.0二进制兼容,使用`file libcoppeliaSim.so`验证架构。 #### 4. 段错误(_segHandler)排查 使用gdb定位崩溃: ```bash gdb --args coppeliaSim.sh -gDEBUG (gdb) catch signal SIGSEGV (gdb) run ``` 检查堆栈帧: ``` bt full ``` 常见原因: - **空指针解引用**:检查所有API返回的指针是否有效 - **内存越界**:使用Valgrind检测: ```bash valgrind --tool=memcheck ./coppeliaSim ``` #### 5. 关键调试日志 在插件初始化时添加调试输出: ```cpp void initPlugin(SimHandle h, struct SSimLink* link) { simAddLog("MyPlugin", sim_verbosity_debug, "插件已加载,句柄=%d", h); //... } ``` 在CoppeliaSim控制台输入`sim.setNamedStringParam('debug','true')`启用详细日志。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值