当前位置: 首页 > 知识库问答 >
问题:

C++,OpenCv在C++中虽然构建正确,但却出错

吕皓
2023-03-14

我是C++的新手,但我需要用OpenCV做一个项目。我已经关闭了OpenCv-4.5.2和opencv_contrib,我使用的是Visual 2019。我使用了cmake,没有错误。

然后,在我所包含的项目中,“C:\opencv\opencv_lib\install\include”目录用于我所包含的链接器的C++附加包含目录,“C:\opencv\opencv_lib\install\x64\vc16\lib”用于附加库目录。我在其他依赖项中包含了“opencv_core452.lib,opencv_highgui452.lib,opencv_imgcodecs452.lib”。我为路径添加了“C:...opencv\build\x64\vc14\bin”。

当我运行一个简单的项目时,似乎有些地方出了问题,我不确定是什么。以下是错误:

严重性代码描述项目文件行抑制状态

  1. 错误LNK2019未解析的外部符号“public:class cv::mat&__thiscall cv::mat::operator=(class cv::mat&&)”(??4mat@cv@@qaeaav01@$$qav01@@@z)在函数_main protorype c:...\protorype.obj1
  2. 中引用
  3. 错误LNK2019未解析的外部符号“public:__thiscall cv::mat::mat(void)”(??0mat@cv@@qae@xz)在函数_main protorype c:...\protorype.obj1
  4. 中引用
  5. 错误LNK2019未解析的外部符号“public:__thiscall cv::mat::~mat(void)”(??1mat@cv@@qae@xz)在函数_main protorype c:...\protorype.obj1
  6. 中引用
  7. 错误LNK2019未解析的外部符号“class cv::mat__cdecl cv::imread(class std::basic_string const&,int)”(?imread@cv@@ya?avmat@1@abv?$basic_string@du?$char_traits@d@std@v?$allocator@d@2@@std@@h@z)在函数_main protorype c:...\protorype.obj 1
  8. 中引用
  9. 错误LNK2019未解析的外部符号“void__cdecl CV::namedwindow(class std::basic_string const&,int)”(?namedwindow@cv@@@yaxabv?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@h@z)在函数_main protorype c:...\protorype.obj1
  10. 中引用
  11. 错误LNK2019未解析的外部符号“void__cdecl CV::imshow(类std::basic_string const&,类cv::debug_build_guard::_inputarray const&)”(?imshow@cv@@yaxabv?$basic_string@du?$char_traits@d@std@v?$allocator@d@2@@std@@abv_inputarray@debug_build_guard@1@@z)在
  12. 错误LNK1120 6未解决的外部protorype C:...\protorype.exe 1

因为我是新来的,请用简单的语言解释我来解决它。提前感谢!

共有1个答案

解明辉
2023-03-14

我终于找到了。我不知道,也许我使用了正确的库和正确的目录,但我决定将所有的库复制到依赖项中,而不仅仅是我使用的那些。下面是我的情况下的所有目录,但请注意,如果您使用的是不同的版本,它们可能是不同的。

opencv_aruco452d.lib opencv_barcode452d.lib opencv_bgsegm452d.lib opencv_bioinspired452d.lib opencv_calib3d452d.lib opencv_ccalib452d.lib opencv_core452d.lib opencv_datasets452d.lib opencv_dnn_objdetect452d.lib opencv_dnn_superres452d.lib opencv_dnn452d.lib opencv_dpm452d.lib opencv_face452d.lib opencv_features2d452d.lib opencv_flann452d.lib opencv_fuzzy452d.lib opencv_gapi452d.lib opencv_hdf452d.lib opencv_hfs452d.lib opencv_highgui452d.lib opencv_img_hash452d.lib opencv_imgcodecs452d.lib opencv_imgproc452d.lib opencv_intensity_transform452d.lib opencv_line_descriptor452d.lib opencv_mcc452d.lib opencv_ml452d.lib opencv_objdetect452d.lib opencv_optflow452d.lib opencv_phase_unwrapping452d.lib opencv_photo452d.lib opencv_plot452d.lib opencv_quality452d.lib opencv_rapid452d.lib opencv_reg452d.lib opencv_rgbd452d.lib opencv_saliency452d.lib opencv_shape452d.lib opencv_stereo452d.lib opencv_stitching452d.lib opencv_structured_light452d.lib opencv_superres452d.lib opencv_surface_matching452d.lib opencv_text452d.lib opencv_tracking452d.lib opencv_video452d.lib opencv_videoio452d.lib opencv_videostab452d.lib opencv_wechat_qrcode452d.lib opencv_xfeatures2d452d.lib opencv_ximgproc452d.lib opencv_xobjdetect452d.lib opencv_xphoto452d.lib
 类似资料:
  • 我一直试图用CakePHP 1.3实现ajax登录。我有一个简单的用户名/通行证登录弹出。 以下是我的视图/元素/登录。ctp: 以下是在我的控制器控制器/users_controller.php 上述控制器的视图位于视图/用户/ajax_login.ctp只有这一行: My Ajax具有以下代码: 现在,一切似乎都是完美的工作,然而,这总是失败到“错误”回调,我不知道为什么。我读过下面所有关于s

  • 我目前正在尝试使用C#生成和发送公共RSA密钥。它应该是PEM格式的2048位长的密钥。我已经成功地使用以下OpenSSL命令做到了这一点(一些输出被缩短): 以下代码是我使用C#生成公钥的代码: 可以从此线程中找到ExportPublicKeyToPEMFormat:https://stackoverflow.com/a/25591659/2383179 我在C#中的输出如下: 使用OpenSS

  • 因此,我进行了一个测试,看看碰撞是如何在SFML中操作的。我制作了以下代码片段: 正如代码所提示的,马里奥在接触地板物体时会改变位置,并且会瞬移到地板上方。 注意,“绿框”是我前面提到的地板对象。还有,忽略图片1中的“左”字,我指的是“右”。 当然,这种行为是有意的(即不是bug),但它是不想要的。 所以我的问题是:我怎样才能消除这种“副作用”呢?我的意思是,我怎样才能修改我的代码,这样马里奥就不

  • 在文件名中使用字符串变量作为当前时间时,创建文件时出错。错误为 “System”类型的未处理异常。mscorlib中出现NotSupportedException。dll 附加信息:不支持给定路径的格式。 我找不到代码中的错误,我尝试没有“路径”变量它会成功运行。当我使用“cTime”变量创建动态文件名时,我不明白发生了什么。

  • 本文向大家介绍在C ++中正确使用堆栈和堆?,包括了在C ++中正确使用堆栈和堆?的使用技巧和注意事项,需要的朋友参考一下 堆栈-函数内部声明的所有变量将占用堆栈中的内存。因此,函数内的任何局部变量都位于堆栈中。 堆-这是程序的未使用内存,可用于在程序运行时动态分配内存。因此,如果我们希望某些东西的寿命比声明它的函数的寿命更长,则必须在堆上分配它。 示例 堆内存中的主要问题是碎片,而堆栈中更容易出

  • 我想了3种方法来创建一个命令并执行它。 每个命令都有不同方法。IE: 或者3)像第二个but一样,方法作为参数but接收,拆分为 这样做的正确方法是什么?由于某种原因,第三个看起来不对,但我不知道为什么。