在Visual Studio中编译和链接第三方库

12

我对C编程相对较新,并且之前没有使用过Visual Studio或第三方库。我正试图通过FMOD完成一些简单的任务并需要链接fmodvclibfmod.h以及当然的fmod.dll

我已将fmodex_vc.lib放入附加依赖项中,并在包括和库目录以及其他包括库中添加了低级别库的路径,但是在构建时却给我报错:

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

但更奇怪的是:

cannot open source file "stdio.h"

这是代码:

#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();
}

任何帮助将不胜感激!


当您将头文件路径添加到INCLUDE_PATH中时,必须使用#include <filename>而不是#include "filename"。双引号必须用于项目目录中的头文件。 - payman
@payman 好的,我尝试了一下,得到了相同的错误。 - user5840403
1个回答

29

链接第三方库通常需要执行以下3个步骤:

1. 添加包含目录。

项目 > 属性 > C/C++->常规 > 附加包含目录中,单击“编辑”,输入文件“fmod.h”所在目录的路径。

2. 链接*.lib文件。

项目 > 属性 > 链接器 > 常规 > 附加库目录中,单击“编辑”,输入你的库文件的路径。

项目 > 属性 > 链接器 > 输入 > 附加依赖项中,单击“编辑”,添加你要链接的库文件的文件名(例如,在这种情况下,可能是“fmodvc.lib”)。

3. 在项目目录中提供*.dll文件。

为了确保程序运行成功,在运行时必须找到*.dll文件。你可以将其放在由PATH变量引用的文件夹中,或者放在进程的PWD中。这将位于你的*.vcxproj文件旁边。

如果你静态链接,则可以跳过第3步,如果你动态加载dll文件,则可以跳过第2步。


感谢您提供这个好答案。在VS2017中,是否有一种方法可以在项目选项中添加运行时目录以查找dlls?类似于./bin或完全不同的目录,例如C:/SomeSDK/bin?基本上是为了避免复制所有dlls。谢谢。 - PinkTurtle
VS2017没有项目>属性>链接器 - user2445507

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接