作为我学习 C++ 的一部分,我正在自学如何将 wav 文件读入 C++。我在网上找到了许多推荐以下库的资源:libsnfile 库 所以我按照下面的一些教程来测试库的基本功能,但我无法使用 Visual Studio 2010 编译该库。
我在网上搜索了以下错误,但没有找到任何对我的特定错误有用的东西。我下载了此处找到的 libsndfile C++ Windows 安装程序。我使用的是 32 位版本,因为我使用的是 win32 C++ 控制台版本。但是,我的 Visual Studio 是 64 位的。下载安装程序后,我执行了以下操作:
我进入了 Visual Studio。在我的项目下,我做了以下事情:
在项目属性中: 1. VC++
包含 >> 添加 ...\libsnfile\include 库 >> 添加 ...\libsnfile\lib 2. C\C++ 添加以下目录作为附加依赖
项 ...\libsnfile\lib\libsndfile-1.lib
我这样做是为了将此第三方库添加到我的项目中。在此之后,为了测试,我运行了以下代码:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <sndfile.h>
int _tmain(int argc, _TCHAR* argv[])
{
printf("This is a test\n");
getchar();
return 0;
}
我对其进行了编码以确保我可以访问我的程序中的 sndfile.h 并编译所有内容。当我尝试实现以下代码时出现问题:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <sndfile.h>
int _tmain(int argc, _TCHAR* argv[])
{
printf("This is a test\n");
//This will be the length of the buffer used to hold samples while the program processes them.
//A SNDFILE is like FILE in a standard C library. Consequently, the sf_open_read and sf_open_write functions will return an
//SNDFILE* pointer when they successfully open the specified file.
SNDFILE* sf = NULL;
/*SF_INFO will obtain information of the file we wish to load into our program. */
SF_INFO info;
/*This is where the program will open the WAV file */
info.format = 0;
sf = sf_open("C:\Users\GeekyOmega\Desktop\gameon.wav", SFM_READ, &info);
if(sf == NULL)
{
printf("Failed to open the file.\n");
exit(-1);
}
getchar();
return 0;
}
然后,当我尝试运行我的程序时,在 Visual Studio 中单击运行时出现系统错误。它说,
The program can't start because libsnfile-1.dll is missing from your computer.
Try reinstalling the program to fix this problem.`
我尝试了 64 位 Windows 安装程序并尝试过,但它不起作用。有人明白我在做什么吗?我在 Windows 7 上运行 Visual Studio 的 2010 作为我的开发环境。
如果我犯了一个愚蠢的错误,我深表歉意,但如果有人能帮助我,我将不胜感激。正如我上面谈到的,我尝试了一些 hacky 修复,但没有任何效果。
编辑:我也知道这个线程here,但这对我当前的问题没有任何意义,因为我没有做他们正在谈论的任何这条路径的东西。
热烈的问候, GeekyOmega