How to tackle linker errors ‘unresolved external symbol referenced in function’ of a externally included library?

  c++, linker, open3d

I have a C++ project which uses Open3D 3D data processing library.
I have built the library from source according to the provided docs, using CMake GUI and Visual Studio 2019 in Windows 10 64. In my C++ project I link to the .lib files within the install folder that was built.

So far the library has worked great, however as soon as I want to use a certain namespace (open3d::t) I get the following error:

Error LNK1104 cannot open file ‘tbb_static.lib’

Searching in the build folder of the Open3D project I find the file here: Open3Dbuildtbbsrcext_tbb-buildDebugtbb_static.lib. So I try to simply add the link to the Additional Dependencies in ProjectProperties->Linker->Input.

The initial Link1104 error is gone, however now I have 131 new linker errors, here is one example:

Error LNK2019 unresolved external symbol nppiResize_32f_C3R_Ctx referenced in function "void __cdecl open3d::t::geometry::npp::Resize(class open3d::core::Tensor const &,class open3d::core::Tensor &,enum open3d::t::geometry::Image::InterpType)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z)
C:UsersmyusersourcereposmysolutionmyprojOpen3D.lib(NPPImage.obj) 1

Here is where I am confused: The path to Open3D.lib in the error message points to my project, not the actual .lib file in the install folder of the Open3D project. In fact, my project folder only contains one .lib file with the name of the project itself.

Coming from C# and Python, I’m still having my fair share of problems with Linker error messages in c++, but could this be the reason for the errors? How can I resolve them?

Source: Windows Questions C++

LEAVE A COMMENT