Compile and link 3rd party library in Visual Studio [duplicate]
Asked Answered
D

1

12

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!

Dropper answered 26/1, 2016 at 6:59 Comment(3)
When you add the path of header files to INCLUDE_PATH, you must use #include <filename> instead of #include "filename". double qoutations must be used for header files that are in the project directory.Hummock
@Hummock Alright I tried that and got the same errorsDropper
Possible duplicate of How to add additional libraries to Visual Studio project?, Compiling and linking third party libraries in VS 2015, etc.Interstellar
S
29

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.

Sherlock answered 26/1, 2016 at 10:19 Comment(2)
Thanks for this nice answer. Is there a way in VS2017 to add a runtime directory in the project options to find dlls ? Something like ./bin or an entirely different directory such as C:/SomeSDK/bin ? Basically to avoid copying all dlls. Thanks.Motet
VS2017 has no Project > Properties > LinkerEpigram

© 2022 - 2024 — McMap. All rights reserved.