When was support for AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM added to WASAPI? - c++

Does anyone know when support for the AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM stream flag was added to WASAPI? MSDN mentions this flag briefly, but doesn't go into much detail regarding its use and which versions of Windows support this.
I'm using the Platform SDK that comes with Visual Studio 2015 and AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM isn't even defined.

Download and install the separate Windows 10 SDK, even though most of the components are installed with VS2015:
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
I had the same problem as you, and installing the latest Windows 10 SDK solved it for me. (Version 10.0.14393.795 at the time of writing.)

Related

d3dx12.h gives a bunch of errors

I'm trying to learn DirectX 12 and i found out these tutorials on github. I downloaded everything and i tried to run the HelloWindow project. I linked the d3d12.lib in Debug->Options->Linker->Input. Unfortunately, it gives me a bunch of errors from d3dx12.h. For most of them, Intellisense says to include d3d12.h even if i already did it. For example, D3D12_RESOURCE_DESC1 is undefined and all his attributes too etc. Did i missed something if yes pls help me.
You are using the 'latest' copy of D3DX12.H which requires you use the 'latest' version of the Windows 10 SDK (19041). If D3D12_RESOURCE_DESC1 is undefined, you are using an older Windows 10 SDK.
Note that there are three different options for fixing this mismatch:
Install the latest Windows 10 SDK (19041). For VS 2019, this is done by running Visual Studio Installer and selecting the new Windows 10 SDK as a component. For VS 2017, you need to run the standalone installer. VS 2015 and earlier are not supported.
Use a version of the D3DX12.H utility header that supports older SDKs. I maintain a version of the 'latest' D3DX12.H header that contains a bunch of preprocessor conditionals so that it will support Windows 10 SDK (14393) or later. That happens to be last version of the Windows 10 SDK to support VS 2015. Obtain it from GitHub: directx-vs-templates.
Use GitHub DirectX-Headers: A new option is to get the latest headers including D3DX12.H as a set from GitHub. You still need a Windows 10 SDK for the link libraries.
See this blog post for details on why D3DX12.H is not part of the Windows 10 SDK.
The samples on DirectX-Graphics-Samples in the main/master branch assume you are using the latest Windows 10 SDK (19041).
As you are new to DirectX 12, you may want to take a look at DirectX Tool Kit for DX12 as a more gentle introduction to the latest version of the API.

How do you install vckpg for Visual Studio Code on Windows?

I am trying to install libcurl for my C++ project on VSCode and I came across a method to install via vckpg from this link: How do you properly install libcurl for use in visual studio 2017?
Hence, I looked for the documentation by Microsoft but only found that you can install vckpg for VSCode for Linux and MacOS but I couldn't find anything on how to install vckpg for VSCode on Windows.
Any idea how do you install vckpg for VSCode on Windows? Or is there an alternative method of installing libcurl on VSCode?
Currently VS Code does not support vcpkg on Windows.
As mentioned here the following issue is directly connected with VS Code support of vcpkg on Windows: https://github.com/microsoft/vcpkg/issues/10217. The issue is currently open and no workaround is provided.
The support may be provided in the future. Here are the comments from the thread:
ghost: "If there are enough requests, a feature request could be initiated to see what would be needed to integrate with CODE RUNNER and/or a plugin for VSCODE."
strega-nil: "Code Runner is not currently a supported way of building with vcpkg; we may add support eventually, but more likely it should be added by the community (or, even better, vcpkg support should be added to Code Runner). However, we do have features hopefully coming down the pipeline which will make life a lot easier for community members adding that support."
Unfortunately i was struggling with the same issue and installing C++ Redistributable which #mutantkeyboard recommended didn't solve the problem.
I installed VS Community Edition with English language pack and now it's OK.

iads.h / VS2005 / W2003 SP2 - which SDK and what are the side-effects?

I'm trying to compile someone elses C++ program using VS2005 on Windows 2003 (SP2).
The compile fails because it can't find iads.h
Which SDK should I install to get this header ?
When I install the SDK is there a danger I might break something already in use ? As far as I can tell the W2003 has no SDK's installed but if it did would installing a different one cause problems ?
You need to the windows sdk. The SDK doesn't install like a regular application. Just because you "installed" it it doesn't change any settings in your compiler.
You will still have to add the directories to header files and libraries in the vs settings page.
You can have multiple version of the windows sdk, you just need to update the directories in the vs options page.
It should be found in the vc\PlatformSDK\include folder. If not then you need to check your installation or you can install the Windows SDK.
The normal Windows SDK includes <iads.h>. I virtually never run a copy of Windows without an SDK installed, so I'm probably not in a good position to say what might work differently if it wasn't, but not much seems broken to me...

Compiling DX 9.0c app against March09SDK => Cannot run with older DX 9.0c DLLs => Problem :)

I'm unable to do a scenario from subject.
I have DirectX 9 March 2009 SDK installed, which is 9, "sub"-version c, but "sub-sub"-version is 41, so libs (d3dx9.lib d3d9.lib) are linking exports to dxd3d_41.dll.
What happens when I try to run my app on machine which has DX9.0c but not redistributable from march 2009 is now obvious :), it fails because it cannot find dxd3d_41.dll.
Which is standard solution for this problem?
How Am I supposed to compile my app to be supported by all machines having DX 9.0c?
Is that even achievable?
Thanx
You need to install the runtime that matches the SDK you use to compile.
The only way to force this to work on ALL machines with DirectX9c installed is to use an old SDK (the first 9.0c SDK). However, I strongly recommend avoiding this. You are much better off just using March 09, and install the March runtimes along with your application installation.
The simplest solution is to link to the Microsoft DirectX end-user runtime updater on your download page and tell people to run this first to make sure that the runtime components are up to date before installing your application.
After that, the next simplest thing is to bundle the necessary runtime updater with your application and have users run it before running your installer.
All of this is documented in the SDK documentation.
The rules are that if you link to d3dx9 then you are expected to handle making sure that the required redist runtime components are installed.
Have a look at the page 'DirectX Installation for Game Developers' in the DXSDK docs.

Where can I find MSCVR80.DLL v8.0.50727.3053?

I've got a bug from one of our customers and believe that the problem lies with MSVCR80.DLL v8.0.50727.3053 - a version which I cannot find for download anywhere, however a google search turns up plenty of other crash reports.
Latest version on my system (and others here) is 8.0.50727.1433 and the Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) is only version 8.0.5027.762 (currently same as the merge module we use)
Is there an "official" link to get this update? Is it bundled with any other Microsoft products?
EDIT: please don't email it to me, I'm looking for the SxS install.
EDIT2: damn, that wasn't the problem after all :(
A thread on the MSDN forums pointed out the answer: msvcr80.dll version 8.0.50727.3053 is included in .NET Framework 3.5 SP1
You ought to be able to answer this question using Microsoft's DLL Help Database http://support.microsoft.com/dllhelp/
Unfortunately, when I try it, I only get two answers for msvcr80.dll whereas there ought to be dozens of different versions: and I don't know why.
Try to use merge modules from "C:\Program Files\Common Files\Merge Modules".