Windows 8 SDK Libraries Location - c++

I've installed the windows 8 SDK in order to use the unofficial OpenGL SDK. There are a few dependencies needed to use the unofficial SDK, namely opengl32.lib, gdi32.lib, user32.lib, glu32.lib, and winmm.lib. However after installing the windows 8 sdk I could not find them in the instalation directory (C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A) where they were located in the previous version of the windows SDK for windows 7. How would I get these libraries? Did I install the windows 8 SDK wrong? Or am I misunderstanding how to obtain these libraries?

The Windows 8 SDK was heavily reorganized from previous versions. Inspired by the very different WinRT api and the added support for ARM processors. The new home directory is "Windows Kits", the files you are looking for are located in C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86

Related

Missing Api-ms-win-core-errorhandling-l1-1-1.dll on Visual Studio 2015 under Windows 7

I'm using Visual Studio 2015 under Windows 7 and I'm not capable to run any programs because of missing Api-ms-win-core-errorhandling-l1-1-1.dll, independently which of the target platform version I choose (Available are 8.1 and 10).
In my folder C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs, only version l1-1-0.dll is available. I tried out different Windows Kit 10 versions, but the required api dll's were not available.
Does anyone know how to fix this problem?
1.) How can I bring VS2015 to use older versions of Api-ms-win-core-**.dlls or
2.) How can I update my existing Api-ms-win-core-*.dlls to newer versions?
Thank you for any responses
Compile your code with the Visual Studio 2015 – Windows XP (v140_xp) platform toolset to generate code which is compatible for Windows XP/Vista/7.
Based on your comment I see you used the qt-opensource-windows-x86-winrt-msvc2015-5.7.0.exe which is for Store Based apps. So this explains why you get a message that dependency files are not found.
Install the non WinRT files of QT to solve the issue.

OpenGL for Windows 7

I have Windows 7 installed, and I would like to use OpenGL. So I want to use the opengl32.lib(I wrote DLL before, but it's .lib).
My problem is, this library is in a folder named Windows Kits -> 8.0 or 8.1 but I don't find anything about 7.x.
Is this a problem, or can I use this opengl32.dll to start developing with OpenGL?
The folder you are talking about is created whenever you install a Windows SDK or WDK folder. For example the default folder for WInodows 8 is:
Program Files\Windows Kits\8.0\ or Program Files (x86)\Windows Kits\8.0\
Note: Your operating system does not have to be Windows 8 in order to use the SDK (though Windows 8 features may not workin a backwards compatible way).
In addition, the current version of OpenGL32.dll is compatible with WInodws 7 and 8.
https://www.khronos.org/opengl/wiki/Getting_Started#Windows
Just to confirm everything is okay with your system, check if your computer has the required prerequisites for the SDK. It looks OS-wise like you will be fine as Windows 7 is among the compatible operating systems.
For the 8.0 library MSDN says:
The Windows SDK requires the following software and hardware on the computer:
One of the following operating systems: Windows 7, Windows Server 2008 R2, Windows 8, or Windows Server 2012
To install the .NET Framework 4.5 Software Development Kit feature, you must install the .NET Framework 4.5 redistributable package before you install the Windows SDK. You can download the redistributable package from Microsoft Download Center.
10 megabytes (MB) to 1 gigabyte (GB) hard disk space for installation, depending on the features that you want.
https://msdn.microsoft.com/en-us/library/ms717422%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

Cannot open source file d3dx9.h

Before I start off I know this is quite a common question, I did search for answers before posting here. Unfortunately, I had no luck.
In my code I include the file like this:
#include <d3dx9.h>
Now the error shows up: Cannot open source file d3dx9.h
In my Include Directories I did enter the path to where it is (if I look it up manually through my files, I can see it there).
The path is: C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
I also set the Library Directory: C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64
x64 since I am running a 64 bit system.
I'd highly appreciate it if someone could take the time to post a suggestion.
Greetings.
Visual Studio 2015 includes the Windows 8.1 SDK which is newer than the headers in the legacy DirectX SDK. The Windows 8.1 SDK includes all the DirectX headers and libraries, but does not contain the now deprecated D3DX (D3DX9, D3DX10, D3DX11) utility library which is why it is "missing".
D3DX9, D3DX10, and D3DX11 are only available in the legacy DirectX SDK. With VS 2010, the VC++ Directory settings you were supposed to use were as follows for Win32 (x86) settings:
<ExecutablePath>$(DXSDK_DIR)Utilities\bin\x86;$(ExecutablePath)</ExecutablePath>
<IncludePath>$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath>$(DXSDK_DIR)Lib\x86;$(LibraryPath)</LibraryPath>
and this for x64 native:
<ExecutablePath>$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86;$(ExecutablePath)</ExecutablePath>
<IncludePath>$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath>$(DXSDK_DIR)Lib\x64;$(LibraryPath)</LibraryPath>
With VS 2012 or later, you have to reverse them since most of the headers in the Windows 8 SDK replace the older DirectX SDK:
<ExecutablePath>$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86</ExecutablePath>
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x86</LibraryPath>
and
<ExecutablePath>$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86</ExecutablePath>
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include</IncludePath>
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x64;</LibraryPath>
See MSDN, Where is the DirectX SDK (2015 Edition)?, The Zombie DirectX SDK, and Not So Direct Setup.
With all that said, you probably shouldn't be using legacy Direct3D 9 anyhow. Using DirectX 11 with one of the modern replacements for D3DX is a better, cleaner option and doesn't require the legacy DirectX SDK. See Living without D3DX.
If you are specifically targeting to run a program on Windows XP SP3 with Direct3D 9, you'll be using the v140_xp Platform Toolset which uses the Windows 7.1A SDK, not the Windows 8.1 SDK. Therefore, you go with the old-school include order. See this post for details.

Changing over from D3DX, D3DCompile not found

so far I've been succesfully changing from the deprecated D3DX libraries to the new ones, but with the function D3DX11CompileFromFile I'm supposed to use the new D3DCompileFromFile. MSDN says the header file is D3DCompiler.h and the lib file is D3DCompiler.lib. Intellisense picks up two, one from
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64
and the other from
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
If anyone knows why this is happening I'd appreciate the help. I've also tried switching the orders of a few of them. Thanks.
Ideally you remove the DirectX SDK (June 2010) paths entirely and just use the D3DCompile header in the Windows 8.1 SDK.
If you have to use the legacy DirectX SDK (June 2010), you put those include & lib paths after the Windows 8.1 SDK. This mostly works, but there are complications with respect to down-level XAudio 2.7. See The Zombie DirectX SDK for all the details.
The legacy DirectX SDK copy of d3dcompiler.h doesn't have the FromFile flavor which was added for the Windows 8.x SDK version. On Windows 8.1 or Windows 10, D3DCompiler_47.DLL is part of the OS, but if you want to run on Windows 7 you need to deploy the DLL with your application which you can just copy out of $(WindowsSdkDir)redist\d3d\<arch>\D3DCompile*.DLL. See HLSL, FXC, and D3DCompile.

MSVC 2015 Universal CRT for app-local deployment

It was announced that the Universal CRT would be a re-distributable DLL such that app-local deployment would still be possible.
I have installed the Visual Studio 2015 Express Edition and I was looking for ucrtbase.dll in the SDK directories, but I could not find anything. The directory that I looked into was "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10", but that only has the debug version of the CRT under "Microsoft.UniversalCRT.Debug".
I prefer not to copy any DLLs from my system, I always only package files from the "Redist" directories. So for instance (like with the previous versions of MSVC), I re-distribute files from "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT" with x86 builds of my app.
Is there a package that I can download that contains the ucrtbase.dll, or perhaps a Visual Studio or SDK update?
Also I am not sure at this point whether just the ucrtbase.dll will be sufficient, as the applications seem to be linked to the stub DLLs api-*.dll, and I'm not sure whether those need to be re-distributed as well.
This blog post under Distributing Software that uses the Universal CRT section describes all the cases in detail, with a big red update notice concerning app-local deployment:
Updated September 11, 2015: App-local deployment of the Universal CRT is supported. To obtain the binaries for app-local deployment, install the Windows Software Development Kit (SDK) for Windows 10. The binaries will be installed to C:\Program Files (x86)\Windows Kits\10\Redist\ucrt. You will need to copy all of the DLLs with your app (note that the set of DLLs are necessary is different on different versions of Windows, so you must include all of the DLLs in order for your program to run on all supported versions of Windows)
You can download UCRT from Microsoft Donwload Center. UCRT is part of OS now, for Vista SP2/7/8/8.1 it is distributed by Update Center.