Finding symbols in libs in VS2017 - c++

Is there a grand table somewhere so I can identify what LIB must be included for a given unresolved external symbol when linking VS2017 C++ code?
Alternatively a simplified library search utility would be great.

Related

Intel IPP: unresolved external symbol _ippiResizeGetSize_8u#32

I am having an odd issue and think there is a simple answer to that but I guess I just can't see the forest because of all the trees.
I am trying to compile a program using Intel IPP (Visual Studio 2015) and get the following error message:
unresolved external symbol _ippiResizeGetSize_8u#32
I added the appropriate folders to the project properties, which did not work. So just to be on the safe side I just copied all static libs and the corresponding header files into the folder where to code of the program lies. It does find the header files but I am also getting the above error. The libs are added as dependencies. I have set IPP so that it uses single-threaded static libraries.
What am I doing wrong here? It seems to be straightforward.
Thank you
Pat
All unresolved symbol error come from VS linker. Basically, it means that you haven't added to linker "input" property the static library, which resolves the required external name.
In your case it is IPP image processing library, i.e. "ippimt.lib" (of the latest IPP versions), or "ippi_l.lib" of IPP v.7.x.
You can add the full name of ippi* library to "input" property, or add IPP library directory to the "general/additional directory" property of VS linker and name of the library file to "input" property. You don't need to copy static libraries to working directory, it doesn't work.
Regards, Sergey

Linking a DLLs in visual studio 2013

I've already looked for solution, without a success.
I need to use a DLL supplied by third parties on Visual Studio 2013(running on (x64) Windows 10).
On machine there are both OpenCV 3.0.0 and OpenCV2.410 installed and working.
The DLL's author has provided a .lib file and He says that in order to use this DLLs in your project, you need to put some others OpenCV's dlls in the project folder( I've tried to put these DLLs in every project folder[yes I know, it has no sense, but after a lot of tries i've lost my patience])
What he supplies is an .dll and an example project( that doesn't work for me because it needs OpenCV2.1 and there are instructions needs to be translate in newest version [and I prefered don't translate nothing]).
The errors in this example project are of this kind:
error LNK2001: unresolved external symbol
fatal error LNK1120: unresolved externals
The most of them are caused by the miss of OpenCV2.1, that I don't want to install, because I'll have to use it on a program using with OpenCV 3.0.0.
In the example project folder there are:
The upper mentioned .dll
A .lib file
The header file .h
These DLLs: cv210.dll, cxcore210.dll, highgui210.dll, ...(eg. cv210d.dll)
What I've done is this:
A folder called "lib" where I insert all .dll, .lib, .h files.
Put the "lib" folder in Project properties>linker> General> Additional Library Directories
Writing the .lib file in properties>linker> Input> Additional Dependencies
Put the 'lib' pathproperties>C/C++>Additional Include Directories[I know, this has no sense too]
I get these kind of errors:
error LNK2001: unresolved external symbol
I've tried #pragma comment(lib, 'file.lib') way too.
Someone can help me?

How to use SQLite3 library in MSVC project?

I want to build a native C++ application using sqlite3.dll. I tried to build it from SQLite amalgamation source. It creates the dll and the lib file (is the lib the dll's import library?) but when I use it in my project, I get errors like
error LNK2019: unresolved external symbol _sqlite3_open referenced in function...
I tried to prefix underscore in the def file (I set the Module Definition File in the Linker Input options), but tough luck.
What am I doing wrong? It looks like the reference is missing: I added SQLite.lib (the lib file I created) in the Additional Dependencies in the Project where I want to use it. I added its directory to Library Directories.
I use MSVC 2010 Express and I am just about to curse it.

OGRE error LNK2001: unresolved external symbol

I'm trying to get some OGRE sample to compile in VS 2013 but I keep getting the same error no matter what I do:
error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)"
The OGRE SDK comes with the boost library. Unfortunatly it is not compatible with VS2013 so I've downloaded the last version compiled using VS2013. You can find it here
The "additional Include Directories" and "additional Library Directories" are properly setup.
The error state that you are using a symbol that is declared, but not implemented, boost::system::error_category is a method of boost, that various libraries use when managing errors, it belong to the system library, the implementation of this method is in [BOOST_ROOT]\boost\libs\system\src\error_code.cpp.
The most probably cause is that your are including the OGRE's library or part of the library that include some boost's libraries that use this method.
A lot of libraries from boost are header only, but this specific library system are not, it need compilation of this .cpp: two possible fixes are compiling an .LIB or .DLL from boost (see Prepare to Use a Boost Library Binary for more info about this) and using this in your project (could be better if you would be using a lot of libraries from boost that are not header only) or the most easy fix: including the error_code.cpp file in your project and compiling again.

Finding Reasons for Linking Errors in Visual Studio

I'm in the process of porting one of my project to an existing framework I've been developing. As a result I have two project, one that's the original I developed and then the ported one.
The problem I'm having is that the new project doesn't link. The error is "... unresolved external symbol ..." where the symbols should be defined in a library that's linked together with the project. By using VS command line tool dumpbin.exe I confirmed that the symbols said to be missing are in the library. The original project works fine, only by removing the library from the Linker->Input->Additional Dependencies do I get the same errors for that project.
Are there other reasons for "... unresolved external symbol ..." or am I simply not linking the library?
Details
The library in question is OpenCL.lib and the errors are "error LNK2019: unresolved external symbol _clBuildProgram#24 referenced in function ..." for all OpenCL API calls. Using the technique described in Tools for inspecting .lib files? I get the symbols for each function as one would expect.
Okay, figured it out. The library I'm linking with is only for x64 architectures, switching to that platform got it working.
Would've liked a more descriptive error from VS but what can you do...