如何切换到 OpenCV 3.0 的静态库以便 exe 是独立的?
How to switch to static libraries for OpenCV 3.0 so exe is standalone?
我有一个使用 opencv 3.0 的项目,但是当我尝试 运行 另一台计算机上的 .exe 时,我得到 "This program cant start because opencv_world300.dll is missing from your computer".
我认为这是因为我没有使用静态库,所以我进入我的项目属性并进入 Release(这是我构建的模式)并更改了以下内容:
Linker>Input>Additional Libraries from $(OPENCV_DIR)\lib 到 $(OPENCV_DIR)\staticlib
然后:
链接器>输入>来自
的附加依赖项
opencv_ts300.lib
opencv_world300.lib
至
IlmImf.lib
ippicvmt.lib
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
libwebp.lib
opencv_calib3d300.lib
opencv_core300.lib
opencv_features2d300.lib
opencv_flann300.lib
opencv_hal300.lib
opencv_highgui300.lib
opencv_imgcodecs300.lib
opencv_imgproc300.lib
opencv_ml300.lib
opencv_objdetect300.lib
opencv_photo300.lib
opencv_shape300.lib
opencv_stitching300.lib
opencv_superres300.lib
opencv_ts300.lib
opencv_video300.lib
opencv_videoio300.lib
opencv_videostab300.lib
里面有哪些库(我不确定我是否需要它们,即使我不使用它们,所以为了安全起见,我把它们都添加了)。
我还把C/C++>代码生成>运行时库改成了多线程(/Mt)
但是现在当我编译时出现未解析的符号错误。我做错了什么吗?或者我需要做些别的事情才能编译它并在另一台机器上 运行ning 吗?
编辑更多信息:
这是未解析的外部符号的屏幕截图:
至于我使用的其他库,我使用的是win32库和标准库。这是一个列表:
#include <windows.h>
#include <commctrl.h>
#include <shlobj.h>
#include <assert.h>
#include <string.h>
#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
@Micka 指出我的附加依赖项中缺少 zlib.lib 文件。添加它可以解决所有问题。
我有一个使用 opencv 3.0 的项目,但是当我尝试 运行 另一台计算机上的 .exe 时,我得到 "This program cant start because opencv_world300.dll is missing from your computer".
我认为这是因为我没有使用静态库,所以我进入我的项目属性并进入 Release(这是我构建的模式)并更改了以下内容:
Linker>Input>Additional Libraries from $(OPENCV_DIR)\lib 到 $(OPENCV_DIR)\staticlib
然后: 链接器>输入>来自
的附加依赖项opencv_ts300.lib
opencv_world300.lib
至
IlmImf.lib
ippicvmt.lib
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
libwebp.lib
opencv_calib3d300.lib
opencv_core300.lib
opencv_features2d300.lib
opencv_flann300.lib
opencv_hal300.lib
opencv_highgui300.lib
opencv_imgcodecs300.lib
opencv_imgproc300.lib
opencv_ml300.lib
opencv_objdetect300.lib
opencv_photo300.lib
opencv_shape300.lib
opencv_stitching300.lib
opencv_superres300.lib
opencv_ts300.lib
opencv_video300.lib
opencv_videoio300.lib
opencv_videostab300.lib
里面有哪些库(我不确定我是否需要它们,即使我不使用它们,所以为了安全起见,我把它们都添加了)。
我还把C/C++>代码生成>运行时库改成了多线程(/Mt)
但是现在当我编译时出现未解析的符号错误。我做错了什么吗?或者我需要做些别的事情才能编译它并在另一台机器上 运行ning 吗?
编辑更多信息:
这是未解析的外部符号的屏幕截图:
至于我使用的其他库,我使用的是win32库和标准库。这是一个列表:
#include <windows.h>
#include <commctrl.h>
#include <shlobj.h>
#include <assert.h>
#include <string.h>
#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
@Micka 指出我的附加依赖项中缺少 zlib.lib 文件。添加它可以解决所有问题。