2014-04-24 3 views
3

libsndfile 라이브러리를 사용하는 C 코드를 컴파일하고 실행하려고합니다. 또한 내가이 경로를 사용하여 라이브러리를 연결 한 project's Properties (in C/C++ -> General -> Additional Include Directories)Visual Studio 2010에서 "오류 LNK2019 : 확인되지 않은 외부 기호"오류가 발생했습니다.

:

나는이 경로를 사용하여 헤더 파일을 추가 한 Project Properties -> Linker -> Input -> Additional Dependencies.

그러나 디버깅하는 동안, 나는 다음과 같은 오류 얻을 :

1>sil.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification 1>sil.obj : error LNK2019: unresolved external symbol _sf_write_sync referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_write_double referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_close referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_read_double referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_open referenced in function _main 1>c:\users\anam\documents\visual studio 2010\Projects\silence\Debug\silence.exe : fatal error LNK1120: 5 unresolved externals

누군가 여기서 문제를 파악해 주시겠습니까? Visual Studio를 처음 사용하는 데 익숙합니다. 정말 도움이 필요합니다.

+1

어떤 이유로 연결이 제대로 작동하지 않습니다. 'dumpbin.exe -headers libsndfile.lib' 명령을 사용하여 링크하려는 .lib 파일에 포함 된 기호를 확인하는 것이 좋습니다. "Visual Studio 명령 프롬프트"에서 해당 명령을 실행하고 결과 출력을 살펴보십시오. 링크하려는 정확한 기호가 거기에 들어 있는지 확인하십시오 (맨 앞에 밑줄 포함). – aardvarkk

+0

[this] (https://msdn.microsoft.com/en-us/library/799kze2z%28v=vs.100%29.aspx)를 보셨습니까? – Pranav

답변

3

나는 똑같은 문제에 직면했다. 나는 다음과 같이 그것을 해결했다.

1) Visual Studio 컴파일러가 32 비트이기 때문에 32 비트 libsndfile (libsndfile-1.0.25-w32-setup.exe) 패키지를 다운로드해야합니다.

2) libsndfile의 setup.exe (libsndfile-1.0.25-w32-setup.exe) 파일을 클릭하여 라이브러리를 설치하십시오.

3) 프로젝트를 생성 한 후, 다음이 단계를 수행

내가) 디버그 >> 프로젝트 속성 >> 구성 속성 >> C/C++ >> 일반 >> 추가가 포함 디렉터리로 이동을 >> 클릭 오른쪽에있는 화살표를 클릭하고 편집 >> 여기를 클릭하여 libsndfile 디렉토리에있는 include 폴더의 경로를 추가하십시오.

ii) 단계 (i)가 완료된 후 구성 등록 정보 >> 일반 >> 추가 라이브러리 디렉토리에서 링커를 클릭하십시오. >> 오른쪽에있는 화살표를 클릭하고 편집 >> 여기를 클릭하십시오. .lib 파일의 경로. 찾아보기 옵션에 .lib 파일이 표시되지 않으므로 전체 경로를 입력해야 할 수 있습니다. 그래서, 제 경우에는 C : \ Program Files (x86) \ Mega-Nerd \ libsndfile \ lib \ libsndfile-1.lib을 입력했습니다.

마지막으로 완료되었습니다! 오류가 발생하지 않고 코드가 컴파일되고 작동해야합니다. 라이브러리의 폴더 디렉토리 (lib 디렉토리가 추가 종속성에 추가) 라이브러리 디렉토리에
클릭 VC++ 디렉토리보기를 지정할 수 없음

+0

"비주얼 스튜디오 컴파일러는 32 비트입니다." 그건 사실 잘못되었습니다. Visual Studio 컴파일러는 사용자가 지정한 설정에 따라 32 비트 또는 64 비트 코드를 생성합니다. 컴파일러 실행 파일 자체 (cl.exe)가 32 비트인지 또는 64 비트인지는 완전히 관련이 없습니다. – AnT

0

, 오른쪽에있는 드롭 다운 버튼을 클릭하고
를 선택하고 그것을해야 디렉토리를 지정 작업.

0

나는 비슷한 문제가있어서 x64 lib와 win32 프로젝트를 섞어서 문제가 발생했습니다.