无法打开已知的共享对象文件
Posted
技术标签:
【中文标题】无法打开已知的共享对象文件【英文标题】:Cannot open shared object file which is known 【发布时间】:2019-05-13 13:05:45 【问题描述】:我正在尝试在整个 cygwin 中执行我在 Qt 上制作的程序。它在我的开发计算机上以这种方式工作。在这里,我想在“新”环境中尝试一下。
当我输入 cygwin 命令时:./pm.exe -qws
它返回 path/to/executable/pm.exe: error while loading shared libraries: libQtXml.dll.4.8.7: cannot open shared object file: No such file or directory
我不明白的是这个库存在并且设置得很好:当我做which libQtXml.dll.4.8.7
它返回这个文件所在的正确路径......(这个路径设置在 $PATH 和 $ LD_LIBRARY_PATH 变量。)
我看不出是什么原因导致可执行文件没有考虑到这个库。
感谢您的帮助!
【问题讨论】:
尝试使用cygcheck pm.exe
来检查DLL。
感谢您的回答。这让我意识到问题不在于库的路径,因为命令cygcheck.exe pm.exe
返回cygcheck: could not find 'pm.exe'
。它比我想象的更奇怪......我在好的目录中,命令的自动完成工作)
鉴于 cygcheck 文档,如果您的程序不在 PATH
中,您可能需要添加 ./
。像这样:cygcheck ./pm.exe
哦,好的,谢谢!确实,看起来缺少一些 cygwin 依赖项。今晚我将启动一个完整的构建,我会看看明天会不会更好!
它工作!非常感谢,我在这个问题上卡了很长时间!这很奇怪,因为指示的错误与缺少的依赖项无关。但它的工作原理非常感谢您的帮助:)
【参考方案1】:
问题已解决:该错误与缺少 *.dll 文件有关。
要知道缺少哪个 dll,请运行命令 cygcheck ./your_exe.exe
(感谢 Benjamin T 的解决方案)。
【讨论】:
以上是关于无法打开已知的共享对象文件的主要内容,如果未能解决你的问题,请参考以下文章
Roslaunch 无法打开共享对象文件:没有这样的文件或目录
加载共享库时出错,无法打开共享对象文件:没有这样的文件或目录(hiredis)