C++, OpenCv at c++ gives error though it is build right - c++

I am new in c++ but i need to do a project using opencv.
I have downlaoded opencv-4.5.2 and opencv_contrib and I am using Visual 2019.
I have used cmake and I got no error.
Then in the project I have included, the "C:\opencv\opencv_lib\install\include" directory fot the C++ additional include directories
For the Linker I have included ,"C:\opencv\opencv_lib\install\x64\vc16\lib" for the additional library directories.
I have included, "opencv_core452.lib,opencv_highgui452.lib,opencv_imgcodecs452.lib", int he additional dependacies.
I have included, "C:...opencv\build\x64\vc14\bin" for the path.
When i run a simple project it seems that something goes wrong and I am not sure what it is.
Here are the errors:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: class cv::Mat & __thiscall cv::Mat::operator=(class cv::Mat &&)" (??4Mat#cv##QAEAAV01#$$QAV01##Z) referenced in function _main protorype C:...\protorype.obj 1
Error LNK2019 unresolved external symbol "public: __thiscall cv::Mat::Mat(void)" (??0Mat#cv##QAE#XZ) referenced in function _main protorype C:...\protorype.obj 1
Error LNK2019 unresolved external symbol "public: __thiscall cv::Mat::~Mat(void)" (??1Mat#cv##QAE#XZ) referenced in function _main protorype C:...\protorype.obj 1
Error LNK2019 unresolved external symbol "class cv::Mat __cdecl cv::imread(class std::basic_string<char,struct std::char_traits,class std::allocator > const &,int)" (?imread#cv##YA?AVMat#1#ABV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std##H#Z) referenced in function _main protorype C:...\protorype.obj 1
Error LNK2019 unresolved external symbol "void __cdecl cv::namedWindow(class std::basic_string<char,struct std::char_traits,class std::allocator > const &,int)" (?namedWindow#cv##YAXABV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std##H#Z) referenced in function _main protorype C:...\protorype.obj 1
Error LNK2019 unresolved external symbol "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits,class std::allocator > const &,class 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) referenced in function _main protorype C:...\protorype.obj 1
Error LNK1120 6 unresolved externals protorype C:...\protorype.exe 1
Because I am new, please explain me in simple words hwo to resolve it.
Thank you in advance!

I finally found it.
I dont know, probably eventhough I was using the right libraries and using the right directories as well, I decided to copy all the libraries into the dependacies and not just those that i use and it workes. Here are all the directories for my case, but note that if you are usign a different version probably they are different.
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

Related

Issues with unresolved externals from TensorFlow 2.4 C++ on Windows

I built the TensorFlow v2.4 C++ API on Windows and now I am trying to run my application, however the linker complains for unresolved externals.
I am trying to build a library with some custom OPs which I was successfully able to compile under Linux, but on Windows I get this:
Error LNK2019 unresolved external symbol "public: __cdecl tensorflow::Status::Status(enum tensorflow::error::Code,class std::basic_string_view<char,struct std::char_traits<char> >,class std::vector<struct tensorflow::StackFrame,class std::allocator<struct tensorflow::StackFrame> > &&)" (??0Status#tensorflow##QEAA#W4Code#error#1#V?$basic_string_view#DU?$char_traits#D#std###std##$$QEAV?$vector#UStackFrame#tensorflow##V?$allocator#UStackFrame#tensorflow###std###5##Z) referenced in function "public: __cdecl tensorflow::Status::Status(enum tensorflow::error::Code,class std::basic_string_view<char,struct std::char_traits<char> >)" (??0Status#tensorflow##QEAA#W4Code#error#1#V?$basic_string_view#DU?$char_traits#D#std###std###Z) TF_Project main_cc.obj 1
Error LNK2019 unresolved external symbol "class tensorflow::Status __cdecl tensorflow::GetNodeAttr(class tensorflow::AttrSlice const &,class std::basic_string_view<char,struct std::char_traits<char> >,int *)" (?GetNodeAttr#tensorflow##YA?AVStatus#1#AEBVAttrSlice#1#V?$basic_string_view#DU?$char_traits#D#std###std##PEAH#Z) referenced in function "public: class tensorflow::Status __cdecl tensorflow::shape_inference::InferenceContext::GetAttr<int>(class std::basic_string_view<char,struct std::char_traits<char> >,int *)const " (??$GetAttr#H#InferenceContext#shape_inference#tensorflow##QEBA?AVStatus#2#V?$basic_string_view#DU?$char_traits#D#std###std##PEAH#Z) TF_Project main_cc.obj 1
Error LNK2019 unresolved external symbol "private: void __cdecl tensorflow::kernel_factory::OpKernelRegistrar::InitInternal(class tensorflow::KernelDef const *,class std::basic_string_view<char,struct std::char_traits<char> >,class std::unique_ptr<class tensorflow::kernel_factory::OpKernelFactory,struct std::default_delete<class tensorflow::kernel_factory::OpKernelFactory> >)" (?InitInternal#OpKernelRegistrar#kernel_factory#tensorflow##AEAAXPEBVKernelDef#3#V?$basic_string_view#DU?$char_traits#D#std###std##V?$unique_ptr#VOpKernelFactory#kernel_factory#tensorflow##U?$default_delete#VOpKernelFactory#kernel_factory#tensorflow###std###6##Z) referenced in function "void __cdecl `dynamic initializer for 'register_kernel_4''(void)" (??__Eregister_kernel_4##YAXXZ) TF_Project main_cc.obj 1
I tried all sorts of things, I compiled tensorflow.dll, tensorflow_cc.dll and tensorflow_framework.dll
I tried to link against all 3 in all sorts of combinations, but the missing symbols are not found.
Am I missing some library that I should link against?
I did a simple test to verify that the libraries I built are valid and they seem so.
Calling tf_monolithic_build(); and tf_compiler_version();
does not produce unresolved externals and returns expected results.
Any help would be greatly appreciated!
Update 1:
Tried to do some digging on the first error.
The Status class is contained within 2 files : status.h and status.cc that live in tensorflow\core\platform
The problematic missing constructor is indeed defined in status.cc, so that should mean that status.cc.o is not part of tensorflow_cc.dll?
Why can this be? In tensorflow\core\platform\BUILD I can see these is some code for compiling the files to a library called status
cc_library(
name = "status",
srcs = ["status.cc"],
hdrs = ["status.h"],
deps = [
":logging",
":macros",
":mutex",
":stacktrace",
":str_util",
":strcat",
":stringpiece",
":stringprintf",
":types",
"//tensorflow/core/protobuf:error_codes_proto_impl_cc",
"#com_google_absl//absl/base",
],
)
Unfortunately my Bazel-fu is very limited and I have no idea how to verify that this library is indeed compiled during the 6 hour long process and is indeed wrapped inside the final DLL file.

Chilitags Microsoft Visual Studio Windows 64 Error

thank you in advance!
I am currently trying just to run the sample code for Chilitags a C++ library for the detection and identification of 2D fiducial markers. I am using Microsoft Visual Studio 2013 x64 on Windows, I have tried to run this code and I have gotten these errors:
Error #1:
error LNK2019: unresolved external symbol "public: void __cdecl chilitags::Chilitags::setFilter(int,float)" (?setFilter#Chilitags#chilitags##QEAAXHM#Z) referenced in function main
Error #2:
error LNK2019: unresolved external symbol "public: __cdecl chilitags::Chilitags::Chilitags(void)" (??0Chilitags#chilitags##QEAA#XZ) referenced in function main
Error #3:
error LNK2019: unresolved external symbol "public: class std::map<int,class cv::Matx<float,4,2>,struct std::less<int>,class std::allocator<struct std::pair<int const ,class cv::Matx<float,4,2> > > > __cdecl chilitags::Chilitags::find(class cv::Mat const &,enum chilitags::Chilitags::DetectionTrigger)" (?find#Chilitags#chilitags##QEAA?AV?$map#HV?$Matx#M$03$01#cv##U?$less#H#std##V?$allocator#U?$pair#$$CBHV?$Matx#M$03$01#cv###std###4##std##AEBVMat#cv##W4DetectionTrigger#12##Z) referenced in function main
Error #4:
error LNK2019: unresolved external symbol "public: __cdecl chilitags::Chilitags::~Chilitags(void)" (??1Chilitags#chilitags##QEAA#XZ) referenced in function main
Code (detect-live.cpp)
https://github.com/chili-epfl/chilitags/tree/master/samples/detection
Let me know if you need any other information to help!

how to use CascadeClassifier in VS 2010 OpenCV

I have a project, what loads pics, etc. I want to make object detection. I've got an xml from haartrain. The following code however won't compile:
String berniurl= "D:\Dropbox\Egyetem\tanulmany2\kutyafelek\berni.xml";
CascadeClassifier berni_cascade;
if( !berni_cascade.load( berniurl ) ){
printf("--(!)Error loading\n");
};
VS2010, OpenCV2.2 (downloaded from site already built).
and errors are in main.obj, like:
Error 7 error LNK2019: unresolved external symbol "public: __thiscall cv::CascadeClassifier::~CascadeClassifier(void)" (??1CascadeClassifier#cv##QAE#XZ) referenced in function _main C:\Users\Gabor\Documents\Visual Studio 2010\Projects\opencvcucc\opencvcucc\main.obj
Error 8 error LNK2019: unresolved external symbol "public: bool __thiscall cv::CascadeClassifier::load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?load#CascadeClassifier#cv##QAE_NABV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std###Z) referenced in function _main C:\Users\Gabor\Documents\Visual Studio 2010\Projects\opencvcucc\opencvcucc\main.obj
As banuj said, I missed some imports. helper site: anlak.com/using-opencv-2-3-1-with-visual-studio-2010-tutorial

Hello World example for V8 using gyp

Since SCons has been deprecated. I used the gyp to generate vs solution.
I did what they told me on the build BuildingWithGYP.
And the v8 project builded ok!
and I got the v8_base.lib but no v8.lib.
And in the hello world project ,get started.I add the lib directory into the add library.
But it linked failed:
Linking...
1>v8test.obj : error LNK2019: unresolved external symbol "public:
__thiscall v8::HandleScope::~HandleScope(void)" (??
1HandleScope#v8##QAE#XZ) referenced in function _main
1>v8test.obj : error LNK2019: unresolved external symbol "public:
__thiscall v8::String::AsciiValue::~AsciiValue(void)" (??
1AsciiValue#String#v8##QAE#XZ) referenced in function _main
1>v8test.obj : error LNK2019: unresolved external symbol "public:
__thiscall v8::String::AsciiValue::AsciiValue(class v8::Handle<class
v8::Value>)" (??0AsciiValue#String#v8##QAE#V?$Handle#VValue#v8###2##Z)
referenced in function _main
1>v8test.obj : error LNK2019: unresolved external symbol "public:
class v8::Local<class v8::Value> __thiscall v8::Script::Run(void)" (?
Run#Script#v8##QAE?AV?$Local#VValue#v8###2#XZ) referenced in function
_main
……
It seems that couldn't find the implement
but i used the dumpbin tool and find the symbol i can find them in the v8_base.lib
I am sure that the library directory is ok!
but i don't know why it couldn't find the implement.
You can add the lib "v8_base.lib" as an additional dependency to fix the problem.

error LNK2019: unresolved external symbol "public:

I am creating an torrent application using libtorrent in VS 2008. I tried the example given in the link http://www.rasterbar.com/products/libtorrent/examples.html
BUt it is showing me these error....how to solve them?
Linking...
main.obj : error LNK2019: unresolved external symbol "public: __thiscall libtorrent::torrent_info::~torrent_info(void)" (??1torrent_info#libtorrent##QAE#XZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "public: __thiscall libtorrent::torrent_info::torrent_info(struct libtorrent::lazy_entry const &)" (??0torrent_info#libtorrent##QAE#ABUlazy_entry#1##Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "class std::basic_ostream > & __cdecl libtorrent::operator<<(class std::basic_ostream > &,struct libtorrent::lazy_entry const &)" (??6libtorrent##YAAAV?$basic_ostream#DU?$char_traits#D#std###std##AAV12#ABUlazy_entry#0##Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "int __cdecl libtorrent::lazy_bdecode(char const *,char const *,struct libtorrent::lazy_entry &,int)" (?lazy_bdecode#libtorrent##YAHPBD0AAUlazy_entry#1#H#Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "public: void __thiscall libtorrent::lazy_entry::clear(void)" (?clear#lazy_entry#libtorrent##QAEXXZ) referenced in function "public: __thiscall libtorrent::lazy_entry::~lazy_entry(void)" (??1lazy_entry#libtorrent##QAE#XZ)
main.obj : error LNK2019: unresolved external symbol "void __cdecl libtorrent::to_hex(char const *,int,char *)" (?to_hex#libtorrent##YAXPBDHPAD#Z) referenced in function "class std::basic_ostream > & __cdecl libtorrent::operator<<(class std::basic_ostream > &,class libtorrent::big_number const &)" (??6libtorrent##YAAAV?$basic_ostream#DU?$char_traits#D#std###std##AAV12#ABVbig_number#0##Z)
main.obj : error LNK2019: unresolved external symbol "public: struct libtorrent::peer_request __thiscall libtorrent::file_storage::map_file(int,__int64,int)const " (?map_file#file_storage#libtorrent##QBE?AUpeer_request#2#H_JH#Z) referenced in function "public: struct libtorrent::peer_request __thiscall libtorrent::torrent_info::map_file(int,__int64,int)const " (?map_file#torrent_info#libtorrent##QBE?AUpeer_request#2#H_JH#Z)
C:\Users\photoshop3\Documents\Visual Studio 2008\Projects\Lib2\Debug\Lib2.exe : fatal error LNK1120: 7 unresolved externals
The .lib is not included in your project. Make sure you are linking it in;
Configuration Properties -> Linker -> Input -> Additional Dependencies
Another altnerative is to simply copy the .lib to your project folder but don't, it's bound to create problems later on.
Sometimes the .lib is not shipped with the library, so you need to compile it yourself.
The README will tell you this. If this is the case, they usually ship with a .sln file you can open and the just compile it into a .lib file which you then reference in your main application, as I wrote above
Have you added the path of header files in the "Configuration Properties" --> "C/C++“ --> "General" --> "Additional Include Directories"?
The link gives you only the sources (including headerfiles) of libtorrent. You should compile this sources to get a .lib file. Add this .lib file to your client:
Configuration Properties/Linker/Input -> Additional Dependencies: libtorrent-rasterbar.lib
The best starting point for compiling should be the README file.
public: isn't the unresolved symbol. It's just there because the linker it trying to tell you that (most) of the unresolved symbols are public member functions.
It looks like you've included the header for "libtorrent", but not linked to the "libtorrent" library.
You have probably not linked with the torrent library or specified the wrong path to it so that the linker cannot find it.
If the input libraries are of 32bit and your are using them in building a 64bit it might be one of the reasons
For me, I had it included in my project, but it turned out that it was a plugin that was designed to not create an instance of in my unit test.