C++の学習の一環として、wavファイルをC++に読み込む方法を独学しています。次のライブラリを推奨する多くのリソースをオンラインで見つけました: libsnfile ライブラリ したがって、以下のチュートリアルに従ってライブラリの基本機能をテストしましたが、ライブラリを Visual Studio 2010 でコンパイルすることはできません。
次のエラーをオンラインで検索しましたが、特定のエラーに役立つものは見つかりませんでした。ここにある libsndfile C++ Windows インストーラーをダウンロードしました。win32 C++ コンソール バージョンを使用しているため、32 ビット バージョンを使用しました。ただし、私の Visual Studio は 64 ビットです。インストーラーをダウンロードした後、次のことを行いました。
Visual Studio に入りました。私のプロジェクトでは、次のことを行いました。
プロジェクトのプロパティ: 1. VC++
インクルード >> ...\libsnfile\include を追加 ライブラリ >> ... \ libsnfile\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 を実行しています。
ばかげた間違いを犯していたら申し訳ありませんが、誰かが私を助けてくれれば、深く感謝します。上記で説明したように、いくつかのハッキーな修正を試みましたが、何も機能しませんでした.
編集:私はこのスレッドhereも認識していますが、彼らが話しているこのパスのことは何もしていないため、これは私の現在の問題には意味がありません。
よろしく、 GeekyOmega