我是visual studio的新手,opencv。
我正在为我的项目使用visual studio 2013,opencv和c ++。
我将opencv和其他库的(复制路径)配置到我的计算机环境系统。
在visual studio中运行项目后,通常会在项目中有一个exe文件。
我可以将exe文件复制到项目文件夹中并复制到计算机中的其他位置,它将正常运行。
这是因为我的计算机环境系统配置了opencv和其他库。
我想与其他计算机做同样的事情但我不想用opencv和其他库手动配置每台计算机。
在Visual Studio 2013中运行项目之后,有什么办法可以在exe文件中链接所有的东西,以便我可以运行exe而不依赖于libaries和opencv的路径吗?
EDITED
我使用opencv安装程序opencv2.4.7.exe
在我目前的VS2013项目中,我将我的项目和opencv安装程序配置为此链接 http://www.anlak.com/using-opencv-2-4-x-with-visual-studio-2010-tutorial/
问题:我可以使用文件夹C:\ opencv \ build \ x64 \ vc11 \ staticlib来自opencv安装程序吗?不需要从源代码opencv创建我自己的库吗?
问题:如果我需要从opencv源(http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html)生成新库或在opencv安装程序的静态文件夹中使用lib,如果我想将它全部包含在exe文件中,我需要创建新项目并重新配置吗?
谢谢。
答案 0 :(得分:1)
首先,您需要重建openCV以生成静态库而不是动态链接的库。这样,应用程序使用的所有代码都会在一个单独的exe文件中抛出(这可能会大得多)。这个exe文件你可以移动到其他计算机,他们应该仍然在那里工作,只要他们的架构至少与你的兼容。因此,如果你在x86 perconal计算机(32位)上构建它,它应该基本上可以在任何其他个人计算机上工作。如果您在x64计算机(AMD 64位)上构建它,它将只在其他x64计算机上运行。假设两个系统使用相同的系统调用API(Windows NT,POSIX ...),至少可以这样做。
对于openCV,您可以通过将BUILD_SHARED_LIBS构建标志设置为false来执行此操作(请参阅OpenCV as a static library (cmake options),从那里获取以下行):
cmake -DBUILD_SHARED_LIBS = OFF ..
完成此操作后,您将看到openCV文件夹看起来与您现在的文件非常相似,只是在“lib”文件夹中现在会有.lib文件而不是.dll文件(至少如果您正在使用Windows,我假设您使用的是Visual Studio)。
下一步是转到项目设置并将链接器设置为与静态库而不是动态库链接。如果您已使用openCV的本地方法进行链接,则可以转到项目设置 - >链接器 - >输入 - >附加依赖项。在那里,您将所有openCV库的扩展名从.dll更改为.lib。
现在您应该能够重建应用程序,并且生成的exe文件中应包含所有依赖库。