gpt4 book ai didi

opencv - 如何在 Qt 项目中静态链接 OpenCV

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:57 25 4
gpt4 key购买 nike

我想在我的 Qt 项目中链接 OpenCV 库(debian 压缩包)。该项目是一个不使用 Qt 库的纯 C++ 项目,它仅使用 Qt 构建系统 (qmake)。生成 MakeFile。

我认为of package中的OpenCV库是静态和动态编译的,因为/usr/lib<中有.so对象和.a对象。我正在寻找 Qt 项目文件的链接选项来告诉构建系统寻找静态库。我也试过添加 LIBS+= -static -lcv ,... 但没用。

最佳答案

我在尝试部署使用 OpenCV 和 QT 的项目时遇到了很多问题。静态链接最终成为一个可怕的兔子洞,也许我不够聪明,无法弄清楚,但我们想出了我认为更好的选择。如果有兴趣,请查看。它涉及我见过的最疯狂的命令:)

静态编译一个使用许多独立库的项目可能会非常棘手。将其他库构建到您的二进制文件中也可能存在奇怪的法律问题,如果它们不是 GPL'ed。相反,我们找到了一种更简单的方法来在一个整洁的小包中共享二进制文件及其依赖项。

首先构建一个正常的发布二进制文件,就好像你只是在正常开发一样接下来进入这个发布目录并运行这个命令。它会将二进制文件所需的所有依赖项复制到您选择的文件夹中!

cp `ldd NAMEOFYOURRELEASE | sed -re s/^.+\=\>// | sed -re 's/^(.+) \(.+\)/\1/'` FOLDERNAMETOPUTLIBRARIES/

对于 NAMEOFYOURRELEASE,放置您创建的可执行二进制文件的名称,

对于 FOLDERNAMETOPUTLIBRARIES,输入您希望将所有依赖项复制到的文件夹的名称3. 现在我们需要告诉可执行文件在陌生的新计算机上时到哪里寻找依赖项。进入项目的 .pro 文件并添加这两行

QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/FOLDERNAMETOPUTLIBRARIES
QMAKE_LFLAGS_RPATH=

现在您应该可以将这个二进制文件及其依赖文件夹移动到任何您想要的地方了!

关于opencv - 如何在 Qt 项目中静态链接 OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com