使用 cmake 在 windows 平台下编译后运行可执行文件为什么会 提示 `由于找不到 libgio-2.0-0.dll` ?

2021-03-11 14:48:30 +08:00
 SystemLight
2694 次点击
所在节点    C
8 条回复
pursuer
2021-03-11 15:47:12 +08:00
windows 能不能找到 dll 取决于你的 PATH 环境变量等,cmake 只是在生成的文件中标记用到了这个 dll,但查找是 windows
pursuer
2021-03-11 15:51:32 +08:00
忘写解决方法了,你可以把 dll 文件夹加入到 PATH 或者把 dll 放到可执行文件目录下试试
bruce0
2021-03-11 15:56:30 +08:00
linux 可以通过制定 rpath 来指定动态库目录

Windows 上好像没有这个东西 Windows 上程序会在 path 和.exe 的当前目录找 .dll 文件

所以可以把需要的 .dll 文件放到 path 目录 或者 .exe 的目录中
SystemLight
2021-03-11 16:06:34 +08:00
@pursuer cmake 可不可以配置将需要的动态链库一起编译打包到应用程序中
SystemLight
2021-03-11 16:07:42 +08:00
@pursuer 是的,加入环境变量是没有问题的,但是问题是程序需要分发到不同主机,每次配置环境变量很麻烦
SystemLight
2021-03-11 16:08:35 +08:00
@bruce0 cmake 有没有功能可以自己复制这个 dll 到程序目录呢
bruce0
2021-03-11 16:49:45 +08:00
set(LIBRARY_OUTPUT_PATH XXX) 可以设置生成的动态库的目录

详细的可以看一下这个 https://juejin.cn/post/6936408961050476558
systemcall
2021-03-11 19:19:53 +08:00
试试把 DLL 和 exe 放在同一级目录
可以用静态编译试试,程序会大很多,但是应该就不会报缺 DLL 的错误了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX