Запрос: Интеграция libsndfile с Visual Studio 2010 C++. Ошибка: libsndfile.dll не найден

Я учу себя, как читать в WAV файлы на C++, как часть моего изучения C++. В Интернете я нашел много ресурсов, в которых рекомендована следующая библиотека: библиотека libsnfile. Итак, я следовал приведенным ниже учебникам при тестировании основных функций библиотеки, но не могу заставить библиотеку компилироваться с Visual Studio 2010.

Я искал в Интернете следующую ошибку, но не нашел ничего полезного для моей конкретной ошибки. Я скачал установщик Windows C++ библиотеки libsndfile, найденный здесь. Я использовал 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-битных окон и попробовал это, но это не сработало. Кто-нибудь понимает, что я делаю, бегаю? Я использую Visual Studio 2010 на Windows 7 в качестве среды разработки.

Я прошу прощения, если я делаю глупую ошибку, но я был бы очень признателен, если бы кто-нибудь мог мне помочь. Я попробовал несколько хакерских исправлений, как я уже говорил выше, но ничего не помогло.

РЕДАКТИРОВАТЬ: я также знаю об этой теме здесь, но это не имеет никакого смысла для моей текущей проблемы, так как я не делаю ничего из этого пути пути, о котором они говорят.

С наилучшими пожеланиями, GeekyOmega

1 ответ

Решение

Я исправил проблему. Я думаю, что для будущих читателей это очень распространенная проблема. Я поместил.dll в папку отладки моего проекта Visual Studio. Visual Studio не мог видеть файл.dll иначе. После этого программа запустилась как положено и запустилась. Если это не решит проблему для вас, тогда я предлагаю что-то еще.

Другие вопросы по тегам