How to make OpenGL apps in 64-bit Windows?

2019-03-14 23:51发布

问题:

My project compiles, link and run in xp32 then I tried to cross compile it to x64 and I came across a lot of questions:

  1. There's no native x64 instalable OpenGL SDK so I link against what?
  2. I saw someone saying that x64 apps use 32bits opengl dll. I tryied to run my compiled 64-bits app in a xp64 with drivers to my video card (radeon 4850), the same I use on xp32 and I got that typical error "bla bla bla, maybe reinstalling you application will resolve the problem"
  3. If I use video card drivers how to keep it working with another Cards, should I build a version for each? (no sense). Should I load an available library dinamicaly? (same no sense)
  4. Which is the reference implementation for x64? where do I find its libs to link against?

I'm really lost on that matter. I did a lot of searchs and found nothing that helped me understant till the momment.

So, what is the path? What I want to know to make native x64 OpenGL apps?

回答1:

The 64-bit OpenGL import library is included in the Windows SDK and gets installed to %ProgramFiles%\Microsoft SDKs\Windows\<version>\Lib\x64\OpenGL32.lib. The corresponding DLL is named opengl32.dll and is located in %SystemRoot%\system32. The 32-bit version is also named opengl32.dll and is located in %SystemRoot%\syswow64 on 64-bit Windows.

You can't load 32-bit DLLs in a 64-bit process, so whatever you read about x64 apps using the 32-bit OpenGL DLL was incorrect. There is definitely a 64-bit OpenGL DLL, but it has "32" in its name, presumably to make porting easier.



回答2:

The OpenGL static and dynamic libraries OpenGL32.lib and opengl32.dll for 32-bit or 64-bit applications come with the OS and are now respectively in the Windows directories listed below. Just keep in mind that the 32-bit and the 64-bit OpenGL (and glew) libraries are named the same for historical reasons.

If you are using Visual Studio in Windows, no need to copy the opengl32.dll library in your Debug or Release directories where is your .exe or the path to OpenGL32.lib in Visual Studio - only add "Opengl32.lib" in Properties, Linker, Input, then Additional Dependencies.

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\um\x86
C:\Windows\System32

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\um\x64
C:\Windows\SysWOW64