【问题标题】:Linker error while trying to compile OpenCv file with visual studio尝试使用 Visual Studio 编译 OpenCv 文件时出现链接器错误
【发布时间】:2011-08-22 19:06:12
【问题描述】:

我尝试编译一些 OpenCv 函数,并包含 C:\OpenCV2.2\modules\haartraining 目录中的 cvhaartraining.h。

我把 Project > 'Your Project Name' Properties... > Configuration Properties > Linker > Input >

opencv 库中的所有 .lib 文件:

"C:\OpenCV2.2\lib\opencv_highgui220d.lib" "C:\OpenCV2.2\lib\opencv_core220d.lib" "C:\OpenCV2.2\lib\opencv_ml220d.lib" "C:\OpenCV2.2\lib\opencv_video220d.lib" "C:\OpenCV2.2\lib\opencv_legacy220d.lib" "C:\OpenCV2.2\lib\opencv_imgproc220d.lib" "C:\OpenCV2.2\lib\opencv_objdetect220d.lib" "C:\OpenCV2.2\lib\opencv_ts220.lib" "C:\OpenCV2.2\lib\opencv_calib3d220d.lib" "C:\OpenCV2.2\lib\opencv_contrib220d.lib" "C:\OpenCV2.2\lib\opencv_features2d220d.lib"
 "C:\OpenCV2.2\lib\opencv_ffmpeg220d.lib" "C:\OpenCV2.2\lib\opencv_flann220d.lib" "C:\OpenCV2.2\lib\opencv_gpu220d.lib"

但它仍然不会链接。

我得到的错误是:

vecToFiles.obj : error LNK2019: unresolved external symbol "void __cdecl cvShowVecSamples(char const *,int,int,double)" (?cvShowVecSamples@@YAXPBDHHN@Z) referenced in function _main
vecToFiles.obj : error LNK2019: unresolved external symbol "int __cdecl cvCreateTrainingSamplesFromInfo(char const *,char const *,int,int,int,int)" (?cvCreateTrainingSamplesFromInfo@@YAHPBD0HHHH@Z) referenced in function _main
vecToFiles.obj : error LNK2019: unresolved external symbol "void __cdecl cvCreateTestSamples(char const *,char const *,int,int,char const *,int,int,int,double,double,double,int,int,int)" (?cvCreateTestSamples@@YAXPBD0HH0HHHNNNHHH@Z) referenced in function _main
vecToFiles.obj : error LNK2019: unresolved external symbol "void __cdecl cvCreateTrainingSamples(char const *,char const *,int,int,char const *,int,int,int,double,double,double,int,int,int)" (?cvCreateTrainingSamples@@YAXPBD0HH0HHHNNNHHH@Z) referenced in function _main
vecToFiles\Debug\vecToFiles.exe : fatal error LNK1120: 4 unresolved externals

我想我缺少一些 .lib 文件,但我不知道是哪个文件。 非常感谢任何帮助。

【问题讨论】:

    标签: visual-studio opencv linker


    【解决方案1】:

    你有哪些额外的 lib 文件?通过谷歌搜索,它看起来像是被编译成一个名为 cvhaartraining.lib 的文件。

    【讨论】:

    • 嗨,这就是我在 OpenCv\lib 中的所有 lib 文件。我在 3rdParty\lib 中也有 cv.lib,它是 gor python 和 viseoInput.lib。我都试过了,它不会工作。我尝试下载 cvhaartraining.lib 并链接到它,但出现错误“文件无效或损坏:无法在 0x88FF 读取”。所有 .lib 文件都是 opencv_XXXd.lib 格式。谢谢你的帮助!
    • 我认为您需要从 cvhaartraining.cpp 和 cvhaartraining.h(以及可能存在的任何其他内容)构建库。该程序是否带有任何类型的生成文件?
    • 是的,它带有 makefile,我尝试构建它,但出现了一些错误。你认为这是解决方案吗?
    • 如果您查看makefile,它将显示编译所需的所有不同库。如果您的项目中没有该文件中的任何内容,则可能会告诉您问题出在哪里。
    • 好的,解决了。我重新安装了 OpenCV,用 cmake 配置了程序 makefile(不仅仅是 haartraining makefile),并添加了新的 .lib 文件。其中之一是 opencv_haartraining_engine.lib。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多