2016-09-02 2 views
1

Windows 개발을 처음 사용합니다. OS X에서 Windows 10으로 만든 응용 프로그램을 이식하는 중입니다. Visual Studio 2015 Community Edition을 사용하고 있습니다.Windows에서 opengl32에 대한 링크가 없습니다.

프로젝트를 실행하려면 GLFW를 연결해야하며 GL 4.5를 대상으로하고 있기 때문에 이해할 수있는대로 Windows에서 GLEW를 사용해야합니다.

그래서 나는 glfw와 glew 라이브러리를 가지고 있습니다. 나는 Cygwin을 사용하여 usr/local/(bin | lib | include)에 libs를 설치하여 OS X에서 libs에 사용할 폴더 구조를 모방했습니다.

내가 가진 문제는 OpenGL 라이브러리 자체입니다.

어제까지, 내 ​​프로젝트 컴파일을 얻을 수 있었다 다음과 같은 비주얼 스튜디오 설정으로 glfw 창을 초기화했다 :

프로젝트 -> 속성 -> :

C++ -> 일반 :

0,123,418 :

추가 디렉토리를 포함

링커 -> 일반 :

추가 라이브러리 디렉토리 :

C:\cygwin64\usr\local\lib 
C:\cygwin64\usr\local\bin 

링커 -> 입력 :

opengl32.dll 
glew32s.lib 
glfw3.lib 

주목해야 할 첫 번째 일이 있다는 것입니다 나는 opengl32와 연결했다. .dll, .lib 아닙니다. Windows SDK를 설치하면 OpenGL32.lib가 Program Files/Microsoft SDKs/Windows (x86 또는 기타)에 있음을 알리는 일련의 질문/온라인 게시물을 보았습니다. 이것은 나를위한 것이 아닙니다. 나는 심지어 Windows 10 SDK를 재설치했으며 정적이거나 동적 인 OpenGL 라이브러리를 설치하지 않습니다.

그래서 OpenGL DLL이 Windows/System32에서 온다고 확신합니다. 전체 시스템에서 OpenGL 라이브러리가있는 유일한 곳이기 때문입니다.

나는 또한 C:\Windows\System32을 링커의 추가 라이브러리 디렉토리 섹션에 넣었을 것으로 생각됩니다. 나는 1 주일 전에 많은 투쟁으로 이것을 설정했기 때문에 나를 생각하게 만든다. 그 이후로 나는 아주 잘 발전 할 수 있었다.

어제 밤 나는 내 일을 자식 분기에 맡기고 다른 분기로 전환 한 다음 그 분기로 병합했다. 병합 후 모든 Visual Studio 링커/C++ 설정이 지워졌습니다. 그래서 나는 위에서 보여 주듯이 그들을 재창조해야했습니다.

LNK1107 invalid or corrupt file: cannot read at 0x2E0 OpenVRTest C:\Windows\System32\opengl32.dll 

내가 분명히 절반 물건을 포함하지 않는 경우 glfw에 해결되지 않은 :

지금 무슨 일 나는 C:\Windows\System32과 OPENGL32.DLL을 포함 할 경우 VS 밖으로 뱉어 것입니다.

이 작업을 다시 수행하는 방법에 대한 힌트가 있습니까? 그것은 나에게 말도 안돼 ... 그것은 잘 작동되었고,이 보조 노트로

또한이 OPENGL32.DLL와 함께 잘 작동되었다하는 사람들이 Windows를 설치한다고 주장하는 이유, 잘 모르겠어요 SDK는 gl lib의 정적 버전을 설치합니다. 적어도 그것은 나를 위해서가 아니다.

감사합니다.

답변

3

링커 -> 입력 :

opengl32.dll 
glew32s.lib 
glfw3.lib 

그건 opengl32.dll은 잘못된 것입니다. Windows 개발에서 링커 은 항상이고 파일은 .lib입니다. 정적 라이브러리의 경우 .lib에는 실제 라이브러리 바이너리가 포함되어 있습니다. DLL의 경우 해당 .lib은 사용할 DLL과 제공하는 심볼에 대해 링커에 알립니다.

어떻게 해야할지에 대한이 특별한 선택의 주된 이유는 Windows 개발에서 실제 DLL을 사용하지 않고도 DLL에 링크 할 수 있어야한다는 것입니다.

시스템 라이브러리도 항상 64 비트 시스템에서 …32의 접미사가 붙습니다.

+0

정보를 얻으 십시다. Windows에는 두 가지 유형의 정적 라이브러리가 있으며 둘 다 확장자 ".lib"가 있습니다. 하나는 정적 링크 (@SaldaVonSchwartz가 찾고있는 종류)이고 다른 하나는 (DLL에서 코드를 공유하는 프로세스를 실행하여) 동적 링크에 사용되는 가져 오기 라이브러리입니다. SaldaVonSchwartz, 제 친구, 당신 말이 맞아요. 나는 Visual Studio 2017을 설치했으며 4 개의 SDK 버전을 제공합니다. 그것들 중 당신이 찾고있는 정적 라이브러리는 없습니다. 어쩌구. – BoiseBaked

-3

닦인 VS 구성 설정 중에서 x86 대 x64 플랫폼 설정과 관련된 몇 가지 문제가있었습니다. 그래서이 프로젝트는 현재 System32의 32 비트 DLL과 연결되는 64 비트를 빌드하려고합니다.

그게 전부입니다.

이론적으로 Windows SDK와 함께 제공되는 opengl32.lib (정적)에 대한 많은 답변이있는 이유는 어디에도 없습니다. 나는 단지 동적 인 것에 대해 링크 만한다.

+0

재미있는 사실 : 64 비트 Windows에서도 시스템 라이브러리의 접미어는 '... 32'입니다. 그리고 Windows에서는 링커 ** 항상 (!) ** (예외 없음)는 .lib 파일을 인제 스트합니다. 동적으로 링크 된 라이브러리의 경우이 "정적"라이브러리에는 링크 할 DLL과 제공되는 정보가 들어 있습니다. – datenwolf

+0

Windows 개발에서'.lib' 파일은 시스템 디렉토리에 존재하지 않지만 컴파일러 배포의 일부입니다. 따라서 컴파일러 툴체인이 설치된 디렉토리 구조의 어딘가에서 찾을 수 있습니다. – datenwolf

+0

그래서 왜 내가 downvoted 했어? lol ... 1- 예. 문제는 다음과 같습니다. VC 설정이 지옥에 갔고 64와 86 사이의 아키텍처 설정이 이제 동일하여 64의 다른 라이브러리와 연결되어 있고 32에 대해 굴곡을 만들었습니다. 이것은 답이 아닙니다. 내 문제가 바로 그 것이다. 2 - statics 내부의 dll 정보에 관해서는 알아두면 좋지만, VS에 Sysmte32/opengl32.dll에 대한 링크를 지정하면 작동하고 opengl32.lib와 연결하도록 지시하면 찾지 못합니다. 모든 전화 번호부를 통해서 수색은 그것을 찾아 내지 않았다. – SaldaVonSchwartz

관련 문제