2011-08-22 5 views
0

MS-s 웨이브 폼 API를 사용하는 프로그램과 링크 오류가 발생했습니다. 제가 사용하고있는 코드는 여기에서 찾을 수 있습니다 : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4422&lngWId=3 페이지의 첫 번째 비트 인 "사운드 장치 열기"제목입니다. 코드에서 오류가 발생하지는 않지만 링커는 매우 지속적으로 불평합니다. 출력은 다음과 같습니다 :웨이브 폼 API 링크 에러

d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\crt2.o:crt1.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\crt2.o:crt1.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\crtbegin.o:cygming-crtbegin.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\crtbegin.o:cygming-crtbegin.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\libgcc.a(cygming-shared-data.o)||In function `cmshared_get_ptr_from_atom':| 
c:\crossdev\b4.4.1-tdm-1\build-sjlj\mingw32\libgcc\..\..\..\..\gcc-4.4.1\libgcc\..\gcc\config\i386\cygming-shared-data.c|91|undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\libgcc.a(cygming-shared-data.o)||In function `_cmshared_create_or_grab':| 
c:\crossdev\b4.4.1-tdm-1\build-sjlj\mingw32\libgcc\..\..\..\..\gcc-4.4.1\libgcc\..\gcc\config\i386\cygming-shared-data.c|140|undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\libgcc.a(cygming-shared-data.o)||In function `cmshared_add_ptr_as_atom':| 
c:\crossdev\b4.4.1-tdm-1\build-sjlj\mingw32\libgcc\..\..\..\..\gcc-4.4.1\libgcc\..\gcc\config\i386\cygming-shared-data.c|118|undefined reference to `[email protected]'| 
||=== Build finished: 10 errors, 0 warnings ===| 

필자는 필요한 경우 빌드 로그를 여기에 붙여 넣을 수 있습니다. 아무도 내가 이것을 해결하기 위해해야 ​​할 일을 알려주지 못했을까요? 또는 더 나은 방법, 직접 문제를 해결하는 방법 그래서 나 자신과 같은 미래의 문제를 해결할 수 있습니까?

[편집] 좋아, 이렇게 해결할 수있었습니다. 프로젝트 -> 빌드 옵션 -> 링커 설정 -> 링크 라이브러리에서 놀고있는 동안 kernel32.lib과 같은 것을 추가하면 ld가 "-lkernel32.lib"을 찾을 수 없다는 오류가 나타납니다. 그래서 필자는 필자가 필요로하는 라이브러리를 찾을 때까지 검색을했고 절대 경로를 추가 했으므로 프로젝트는 완벽하게 컴파일됩니다! : D 그러나 나는 도서관 검색 경로를 추가했기 때문에 다소 이상했다. 도움이되지 않았다. 그래서 다시 돌아가서 왜 작동하지 않는지 살펴 보았습니다. 라이브러리가 "C : \ SDK \ Lib \"에있는 것처럼 경로 이름에 후행 백 슬래시를 추가해야하는 것처럼 보입니다. Code :: BLocks에 후행 슬래시를 추가하여 올바르게 검색하십시오. 수정 된 후에는 필자가 링커 설정 -> 라이브러리 링크를 kernel32로 변경 했으므로 이제는 문제없이 작동합니다.

나를 도와 주신 모든 분들께 감사드립니다 !!!^_^

답변

0

Kernel32.lib과 연결되지 않은 것 같습니다. 프로젝트 속성을 확인하십시오.

+0

실제로 kernel32.lib가없는 것 같습니다. :/사실 Windows 7 시동기에있을 수도 있습니다. (내가 바꿀 수 있으면 좋겠지 만 지금은 제한된 자원을 가지고 있습니다.) kernel32.dll을 가지고 있지만, 그것은 작동하지 않았다.내가 Code : Blocks에 다소 익숙하기 때문에 잘못하고있을 수도있다. Project-> Build Options-> Linker Settings-> Link libraries에서 설정했다. 또한 kernel32.lib와 연결하지 않는다고 생각하는 이유는 무엇입니까? 심문을 소리내어하지 않으려 고했지만, 내가 말했듯이 나 자신과 같은 것을 파악하는 법을 배우고 싶습니다. – Luna

0

나는 같은 문제가있다. 나는 그것을하는 방법을 알아 냈다. 문제는 링커에 달렸고, 일부 Windows 기능을 exe 파일에 연결하려고 시도했다. 컴파일러는이를 찾을 수 없다. 나는이 해결 방법 :

  1. 윈도우 7 SDK를 설치를, 당신은 여기에서 다운로드 할 수 있습니다 : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=3138
  2. 가 CodeBlocks의 검색 라이브러리에 라이브러리 경로를 추가하려면 프로젝트/빌드 옵션 (프로젝트를 선택/설정 디렉토리/링커/추가 및 SDK 라이브러리 경로를 배치 할 수 있어야합니다 : C : \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Lib
  3. 링커 설정에서 Windows 라이브러리에 대한 참조를 추가하십시오. 프로젝트/빌드 옵션/링커 설정/추가 (링크 라이브러리에서) 및 kernel32, user32 및 gdi32 추가 (이 마지막 하나는 윈도우 GUI를 사용하는 경우 추가해야합니다).

그건 ... 이제 프로젝트를 다시 작성하면 완벽하게 작동합니다.

참고 :이 설정을 exe 프로젝트에 추가해야합니다. 라이브러리를 만드는 경우 exe 파일을 연결할 때 오류가 표시됩니다.

+0

답장을 보내 주셔서 감사합니다. 불행히도 그것은 내 문제를 해결하지 못했습니다. 나는 지금 필요한 라이브러리를 가지고있다. (나는 폴더를 체크했다.) 필요한 레퍼런스를 추가했지만, 여전히 같은 문제가 발생한다. 사실 내가 가진 오류에는 차이가 없다. MSVC 2008 익스프레스로 시험 해보고 거기서 작동하는지 생각 중이며, 일단 기회가되면 결과를 게시 할 것입니다. – Luna

1

system32에 라이브러리를 배치하고 LIBS += L$$quote(C:/Windows/System32)으로 링크하려고하면 같은 오류가 발생합니다.

일반 디렉토리에 배치하고 상대 경로를 설정하면 모든 것이 올바르게 작동합니다.