opencv 和 c++ 编译版本无需运行库

Posted

技术标签:

【中文标题】opencv 和 c++ 编译版本无需运行库【英文标题】:open cv and c++ compile release without need library for run 【发布时间】:2017-09-03 19:33:51 【问题描述】:

首先我有简单的c++代码和opencv

不管代码是什么

现在在 Windows 中,我使用了 Visual Studio,并将打开的 cv 库添加到 Visual stuio 并编译它及其工作,但是当我将它发送到另一台电脑时,它需要打开 cv 库,它很难发送所有库,所以我找到了程序需要一些文件,如

opencv_highgui2410.dll ..... .dll opencv_objdetect2410.dll

这使我的程序在没有库的情况下运行

现在我用代码块编译后转向 ubuntu linux 这张照片将向您展示我如何链接库

当我将程序发送到另一台电脑时,我现在构建程序并运行它的工作,它给出了一些文件未找到的错误

error while loading shared libraries: libopencv_core.so.2.4 我复制此文件libopencv_core.so.2.4 并将其添加到程序旁边仍然相同的错误似乎不像 windows

任何解决方案都让我编译 opencv 程序并运行程序,而不需要完整的库只是它的一些文件

或任何想法添加项目需要在程序旁边运行的文件 (libs),就像 windows 一样

【问题讨论】:

有什么原因不能简单地使用apt get 安装opencv? @Frank 我在主机上上传了我的程序这个问题程序给了我error while loading shared libraries: libopencv_core.so.2.4 我的意思是,将依赖项作为二进制文件分发虽然可行,但如果可以的话,您确实希望避免这种情况,尤其是对于可以通过包管理器安装的库。 现在:/我需要在 linux 主机上运行程序的解决方案 我的问题仍然存在,为什么不在主机上运行apt-get install opencv 【参考方案1】:

我认为这应该对您有所帮助。 但是从 cmets 来看,我担心你的 linux 经验很少,我希望这会有所帮助:

https://s1meonov.wordpress.com/2010/12/27/opencv-static-linking-gnulinux-gcc/

(首先,一定要了解什么是共享库和静态库,它们是如何工作的以及它们对软件许可证的影响,还一定要了解如何在 linux 中安装程序。安装请查看此链接:@ 987654322@)

【讨论】:

我没有一点 linux 经验,我只是安装它并在今天使用它:D @so 我必须将它编译为静态库? 没有。正如 Frank 在之前的 cmets 中所说,静态链接是“坏的”和“旧的”。如果可以,最好的方法是在 linux 上使用 apt-get 安装 opencv。 apt-get 是一个“某种”应用商店(Linux 用户请原谅 :))))查看在 linux 中安装的初学者指南,阅读后应该更清楚) 这样做,opencv 将作为共享库安装在您的 linux 系统上。这是最佳实践。此外,如果您想分发(例如销售)您的软件,则不能将其与包含的静态库一起发布。这涉及我自己不太了解的许可证和法律内容,但我认为如果您将 opencv 作为静态库与您的项目一起分发,您还应该开源您的项目以便使用 opencv 许可证)

以上是关于opencv 和 c++ 编译版本无需运行库的主要内容,如果未能解决你的问题,请参考以下文章

由于C++类库版本不同导致的OpenCV编译链接错误

不同版本的 C++ 库

MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库

C++开发新版本vs使用旧版本vs编译的静态库动态库

Homebrew OS X OpenCV - 在另一台 Mac 上运行时寻找 dylib

OpenCV静态库编译与链接