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:
- There's no native x64 instalable OpenGL SDK so I link against what?
- 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"
- 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)
- 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?
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.
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