Compile and link 3rd party library in Visual Studio

user5840403 picture user5840403 · Jan 26, 2016 · Viewed 13.4k times · Source

I am fairly new to C programming and I haven't used Visual Studio or a third party library before. I'm trying to do something simple with FMOD and need to link fmodvclib, fmod.h, and of course fmod.dll.

I've put fmodex_vc.lib in the additional dependencies and the path to the low level libraries in the include and library directories as well as additional include libraries but when I build it gives me:

"cannot open source file "fmod.h"
identifier "FSOUND_SAMPLE" is undefined
Cannot open include file: 'fmod.h': No such file or directory

but even weirder is:

cannot open source file "stdio.h"

here is the code:

#include "fmod.h"
#include <stdio.h>

FSOUND_SAMPLE* handle;

int main(void)
{
    int input;

    FSOUND_Init(44100, 32, 0);

    handle = FSOUND_Sample_Load(0, "test.ogg", 0, 0, 0);
    FSOUND_PlaySound(0, handle);

    while (input != 0)
    {
        scanf_s("&d", &input);
    }

    FSOUND_Sample_Free(handle);
    FSOUND_Close();
}

Any help would be appreciated!

Answer

EGOrecords picture EGOrecords · Jan 26, 2016

To link against third party libraries you usually have to do 3 things:

1. You have to add the Include Directory.

In Project > Properties > C/C++->General > Additional Include Directories

Click Edit, and enter the path to the directory where the file "fmod.h" is located.

2. You have to link against the *.lib file.

In Project > Properties > Linker > General > Additional Library Directories, click Edit and enter the path to your library files.

In Project > Properties > Linker > Input > Additional Dependencies, click Edit, add the filename of the library you want to link against (in this case this would be most likely "fmodvc.lib")

3. You have to provide the *.dll in your project directory

That your programm will run successfully it has to find the *.dll file at runtime. You can either place it in a folder referenced by the PATH variable, or in the PWD of your process. This would be right beside your *.vcxproj files.

If you are linking statically you can skip step 3, if you are loading the dll file dynamically you can skip step 2.