how to #include third party libraries

Moonlit picture Moonlit · Jul 26, 2013 · Viewed 19.8k times · Source

I have built and installed a library called OhNet. After make install the corresponding header files of the framework have been installed under usr/local/include/ohNet. Now I want to use the Library in my C++ project (i am using eclipse) but when i try to include some header files, eclipse is not able to find the files. As far as i know eclipse should search for header files in these directories (/usr/include , /usr/local/include ,...) by default.... What do i have to do to use the library? I am pretty new to C++ and haven't used third party sources before.

Thank you.

--EDIT-- I simply want to write an easy "helloworld" programm to verify that i have included the framework correctly. In order to do that i want to instatiate the class OpenHome::Net::DvDeviceStdStandard. see: ohNet C++ reference

I can now include the header file using: #include <ohNet/OpenHome/Net/Core/DvDevice.h> That works fine. But how can i create an object of type OpenHome::Net::DvDeviceStdStandard ? now? Eclipse says that this type cannot be resolved. :(

#include <iostream>
#include <ohNet/OpenHome/Net/Core/DvDevice.h>

using namespace std;

int main() {

    OpenHome::Net::DvDeviceStdStandard device; //type cannot be resolved
    cout << "!!!Hello World!!!" << endl;
    return 0;
}

Answer

πάντα ῥεῖ picture πάντα ῥεῖ · Jul 26, 2013
  1. Use the -I compiler option to point to the 3rd party libraries directory (-I/usr/local/include/ohNet)
  2. Use #include "[whatever you need from oHNet].h" in your header files and compilation units as needed (Note: you might need to put relative prefix pathes for subdirecories in the 3rd party include paths tree here!)
  3. Use the -L linker option to specify a path to the 3rd party libs you need (-L/usr/local/lib probably)
  4. Use the -l linker option to specify any concrete 3rd libs you need (-l[oHNet] probably)

Look in the directories what actually was installed there to figure what to place for [whatever you need from oHNet].h and [oHNet], s.th. like liboHNet.a for the latter.

You didn't tag [tag:Eclipse CDT] explicitly here, but go to the Project->Properties->C++ Builder->Settings Dialog and look for C/C++ Includes and Linker Options.