2015-12-03 84 views
0

我试图设置VS2015解决方案,我与OpenCV 3.0.0,我试图这样做只使用静态库。OpenCV和Visual Studio 2015:为什么包含静态库不工作?

头文件: OpenCV的头文件包含正确,我可以在我的源文件中引用它们没有问题。

程序库:当我使用CMake构建OpenCV(称为“ippicvmt.lib”)时为我创建的静态库文件包含正确,并且加载没有问题。

在代码中使用的OpenCV:当我尝试使用OpenCV的类/功能在我的解决方案,我建立类似

LNK2001: unresolved external symbol "public: virtual double __thiscall cv::VideoCapture::get(int)const 

我可以用鼠标右键单击,然后选择“去的时候得到链接错误定义“我使用这个函数,它打开videoio.hpp并显示虚拟方法的声明。我看到的链接器错误很可能是由于Visual Studio无法在我的解决方案中包含的静态库中找到该方法的实际实现而导致的。

我的理解是,我需要包含的唯一.lib文件是一个静态库文件。这就是我现在所包含的全部内容。

有人知道为什么VS无法在OpenCV静态库中找到此代码的实现吗?

+0

当您使用CMake时,您是否指定了是否要构建共享库?它应该产生更多的库,而不仅仅是ippicvmt。另外,你正在构建一个调试或发布版本? –

+0

我目前正在尝试构建发布版本,并且项目设置均为发布版本。我没有触及CMake设置,所以我不确定。我应该建立共享库吗? – janimationd

+0

重新打开openCV解决方案并取消选中生成共享库。这将告诉openCV编译静态库而不是DLL –

回答

0

我解决了我的问题,通过禁用CMake中的共享库构建标志,之后更多的.lib文件显示在我安装的sharedlib文件夹中。我在我的项目属性和我的项目中添加了我想用于我的其他依赖项的每个.lib文件。