OpenCV:未解决的外部符号

4
我知道这个问题无处不在,但是将库目录添加到项目属性的魔法棒对我没有用。

我按照Visual Studio的教程(我这里使用的是2013版本),以及opencv 3.0 beta环境变量设置进行了操作。

而且这是“测试它!”部分中相同的代码。这是vs构建输出的头文件:

1>------ Build started: Project: OpenCVTest, Configuration: Debug Win32 ------
1>opencv_core300d.lib(matrix.obj) : error LNK2019: unresolved external symbol _ippicvsFlip_16u_I@8 referenced in function "enum IppStatus (__stdcall*__cdecl cv::getFlipFunc(int))(void *,int)" (?getFlipFunc@cv@@YAP6G?AW4IppStatus@@PAXH@ZH@Z)
1>opencv_core300d.lib(matrix.obj) : error LNK2019: unresolved external symbol _ippicvsFlip_32f_I@8 referenced in function "enum IppStatus (__stdcall*__cdecl cv::getFlipFunc(int))(void *,int)" (?getFlipFunc@cv@@YAP6G?AW4IppStatus@@PAXH@ZH@Z)
1>opencv_core300d.lib(matrix.obj) : error LNK2019: unresolved external symbol _ippicvsFlip_64f_I@8 referenced in function "enum IppStatus (__stdcall*__cdecl cv::getFlipFunc(int))(void *,int)" (?getFlipFunc@cv@@YAP6G?AW4IppStatus@@PAXH@ZH@Z)
1>opencv_core300d.lib(matrix.obj) : error LNK2019: unresolved external symbol _ippicvsFlip_8u_I@8 referenced in function "enum IppStatus (__stdcall*__cdecl cv::getFlipFunc(int))(void *,int)" (?getFlipFunc@cv@@YAP6G?AW4IppStatus@@PAXH@ZH@Z)
1>opencv_core300d.lib(matrix.obj) : error LNK2019: unresolved external symbol _ippicvsSortAscend_8u_I@8 referenced in function "enum IppStatus (__stdcall*__cdecl cv::getSortFunc(int,bool))(void *,int)" (?getSortFunc@cv@@YAP6G?AW4IppStatus@@PAXH@ZH_N@Z)
1>opencv_core300d.lib(matrix.obj) : error LNK2019: unresolved external symbol _ippicvsSortDescend_8u_I@8 referenced in function "enum IppStatus (__stdcall*__cdecl cv::getSortFunc(int,bool))(void *,int)" (?getSortFunc@cv@@YAP6G?AW4IppStatus@@PAXH@ZH_N@Z)

其余日志相同。我已经使用了 opencv\build\x86\vs12 目录下的内容来填充 libbin 目录。我在 C/C++->代码生成->运行库 选项中盲目地使用了 /MDd 选项。有什么问题吗?

2
这些符号来自于新的第三方库ippicv,其中包含一部分有用的Intel IPP函数。请尝试定位ippicvmt.lib,并确保将其添加到链接列表和附加库目录的路径中。我不确定/MD/MT之间的区别。您可能需要切换。实际上,我很惊讶ippicv库还没有静态链接到opencv中。 - chappjc
感谢@chappjc。我已经使用了你和其他人的指导使其工作。我将在下面回答它。 - MadeOfAir
2个回答

11

我将$(OPENCV_DIR)\staticlib添加到了库目录(Library Directories)链接器(Linker) -> 附加库目录(Additional Library Directories),并在链接器(Linker) -> 输入(Input) -> 附加依赖项(Additional Dependencies)中添加了以下内容:

ippicvmt.lib
IlmImfd.lib
libtiffd.lib
libpngd.lib
libjasperd.lib
libjpegd.lib
libwebpd.lib
zlibd.lib
comctl32.lib

现在这个示例能够正常工作。


3

很遗憾,那个解决方案对我没用。对于处于类似情况的人:

可以通过将$(OPENCV_DIR)\lib文件夹中的这些库作为附加依赖项(链接器 -> 输入 -> 附加依赖项:)添加进来,从而使其正常工作。具体来说:opencv_ts300d.lib;opencv_world300d.lib。


是的,对于OpenCV(3.0)的新版cv2版本而言,这是正确的。 - visoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接