Inquiry: Integrating libsndfile with Visual Studio 2010 C++. Error: libsndfile.dll not found

99封情书 提交于 2020-01-11 09:32:13

问题


I am teaching myself how to read in wav files into C++ as a part of me learning C++. I have found many resources online that recommended the following library: libsnfile library So I followed some tutorials below in testing the basic functionality of the library, but I can't get the library to compile with Visual Studio 2010.

I have searched online for the following error, but did not find anything useful for my particular error. I downloaded the libsndfile C++ windows installer found here. I used the 32bit version since I am using the win32 C++ console version. However, my Visual Studio is 64 bit. I did the following after I downloaded the installer:

I went into Visual Studio. Under my project, I did the following:

In project properties: 1. VC++

Include >> added ...\libsnfile\include Library >> added ...\libsnfile\lib 2. C\C++ Added the following directory as additional dependencies
...\libsnfile\lib\libsndfile-1.lib

I did this to add this third party library to my project. After this, to test, I ran the following code:

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

I coded that to make sure that I could access the sndfile.h in my program and everything compiled. The problem occured when I tried to implement the following code:

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

I then get a system error when I click run inside visual studio when I try to run my program. It says,

The program can't start because libsnfile-1.dll is missing from your computer. 
Try reinstalling the program to fix this problem.` 

I tried the 64 bit windows installer and tried that, but it didn't work. Anyone understand what I am doing run? I am running Visual Studio's 2010 on Windows 7 as my dev environment.

I apologize if I am making a silly mistake, but I would deeply appreciate if anyone could help me. I tried a few hacky fixes, as I talked about above, but nothing has worked.

EDIT: I am also aware of this thread here, but this doesn't make any sense to my current issue as I am not doing any of this path stuff that they are talking about.

Warm Regards, GeekyOmega


回答1:


I fixed the issue. For future readers, this is a very common problem, I think. I placed the .dll in the debug folder of my Visual Studio project. Visual Studio couldn't see the .dll file otherwise. After this, the program fired up as expected and ran. If this does not fix the issue for you, then I suggest something else could be going on.



来源:https://stackoverflow.com/questions/13104714/inquiry-integrating-libsndfile-with-visual-studio-2010-c-error-libsndfile-d

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!