Visual Studio and .DLL Version Number - visual-studio

I am trying to figure out which SAPI version I have installed on my Win XP Pro laptop.
I am adding sapi.dll to my project:
Project > Add Reference > COM:
Microsoft Speech Object Library 5.0 C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.dll
If I open Windows Explorer and navigate to C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.dll, it shows the version number as 5.1.4111.0
The interop file that is created by the Visual Studio (Interop.SpeechLib.dll) shows version number as 5.0.0.0
If I go to Project > Add Reference > Browse and manually browse for the dll, it makes no difference. While the physical dll shows version 5.1.4111.0, everything in Visual Studio turns into version 5.0.0.0
Why the discrepancy?
Thanks.

Because the type library version doesn't have anything to do with the file version. The library version describes the declared interface of the API. When a breaking change is made that requires programs to be recompiled then the library version is incremented.
The file version is an implementation detail. There were probably multiple revisions of it on XP, say for different service packs or security patches. "5.1" here means the Windows version number. 4.0 = Windows NT, 5.0 = Windows 2000, 5.1 = XP, 6.0 = Vista, 6.1 = Windows 7. A change in the file version doesn't require your program to be recompiled. You only care about the library version.

Related

Build ATL VS2010 project on CI server

I need to build VS2010 C++ ATL project on CI server with no VS2010 installed.
The project can be successfully built on developers machine with VS2010 installed. But VS2010 cannot be installed to CI servers because that requires a license.
So, for now I'm trying the following approach:
Installed VS2010 Express
Installed Microsoft Windows SDK for Windows 7
Installed Windows Driver Kit (it includes ATL and MFC)
Although I have ATL headers and libs installed on the CI machine, I'm getting the following errors:
error C2039: 'AtlSetPerUserRegistration' : is not a member of 'ATL'
error C3861: 'AtlSetPerUserRegistration': identifier not found
I compared atlbase.h headers from VS2010 installation and from WDK. They are different:
- atlbase.h from VS2010 installation does have AtlSetPerUserRegistration definition;
- atlbase.h from WDK installation does not have it.
That causes an error mentioned above.
The question is: how to configure CI build machine for building ATL projects without installing VS2010?
Update:
Checking atldef.h file I found the following:
VS2010 version has the line:
#define _ATL_VER 0x0A00 // Active Template Library version 10.00
and WDK version has the line:
#define _ATL_VER 0x0800 // Active Template Library version 8.00
So, WDK ATL version differs from the VS2010 ATL version. That's why they're not 100% compatible.
Now the question is: How to get ATL v10.0 on the build server without having VS2010 installed?
In case if anyone else meets the same issue, here is a workaround:
The required version of ATL is available on developers machine with VS2010 installed (e.g. VS2010 Professional).
It is located in the folder %VCINSTALLDIR%ATLMFC.
By default it is c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
Folder ATLMFC can be copied to the build server by hands into %VCINSTALLDIR%, where VS2010 Express is installed. And that makes build server able to build VS2010 ATL projects without installing VS2010.
Though this is a workaround. And I'd like to see better solution if any. So, I'm not accepting my answer.

Installation SDK 7.1

I want to ask about an error I faced durring the installation of SDK 7.1 compiler in order to compile .c files under matlab, knowing that I've downloaded SDK ISO and .exe but without use, from this link
http://www.microsoft.com/en-us/download/details.aspx?id=8279
I'm using Matlab 2013b,Windows7 64 bit
I got this error every time
Setup could not find the file WinSDK_amd64\WinSDK_amd64.msi at any of the specified source locations G:\Setup
I have an Intel i7, Win 7 64 bit and I was able to resolve this by downloading the Windows SDK 7.1 (iso image) from this link.
http://download.microsoft.com/download/F/1/0/F10113F5-B750-4969-A255-274341AC6BCE/GRMSDKX_EN_DVD.iso
I had tried several downloads and this was the only one that actually contained the ../setup/WinSDK_amd64\WinSDK_amd64.msi file that the error message references.
Previous to finding this download I had tried removing every single instance of the C++ redistributable for each version of Visual studio I had installed. This alone did not work, because the other Win 7 SDK downloads I tried did not contain the ../setup/WinSDK_amd64\WinSDK_amd64.msi file that the error message references.
You can find it using Visual Studio 2019 installer under the name "C++ Windows XP Support for VS 2017 (v141) tools [Deprecated]".

Windows Media Services development in VS2012 (C++)

I have an application that creates WMSPublishingPoint. After migration to VS2012 (from VS2010) I can't compile the project due to studio can't see 'wmsserver.h' file.
This file is shipped with WindowsSDK 7.1, but there is no such file in SDK for Windows 8.
If I choose platform toolset vs110_xp - it's OK. But I need the v110 toolset.
Here is a link which confirm that developers can use wmsserver.h in development for Windows 8: http://msdn.microsoft.com/en-us/library/windows/desktop/dd874782%28v=vs.85%29.aspx
I tried to reinstall SDK (http://msdn.microsoft.com/en-US/windows/desktop/hh852363), but it didn't help.
Is there any additional link to install Windows Media Services SDK for VS2012? I haven't necessary files after installation of Windows SDK for Windows 8.
The SDK is removed, probably because the component is not supported on Windows Server 2012.
I suggest you to extract the WMS facing code to a separate DLL that uses the vs110_xp set, and use the DLL in your application.

VS2005 and Windows SDK 7.1

Running the WindowsSdkVer.exe shipped with Platform SDK 7.1 does not work.
None of the .BAT files in VS 2005 get updated.
can anyone please tell me how to correct this?
Also, how do I verify that VS2005 is using Platform SDK 7.1?
There are several articles for this in MSDN but none of them for above configuration.
Also, none of them describe the concrete way / definate way of verifying this
You could try to manually set the include and lib paths of the VS environment under
Tools->Options->VC++ Directories
or something like that (it's been a while).
For verification, you can add the /showIncludes parameter to the additional compiler options of the project, and /verbose:lib to the additional linker options to double check that the correct headers/libraries are being used when compiling/linking the project.
IIRC there was some kind of incompatibility between one of the newer versions of the SDK (could have been version 7) and using VS2005, but I can't recall off hand what that was.
You can use below method for using Windows SDK 7.1 with Visual Studio 2005.
Configuring Visual Studio for Visual C++ Development with the Windows SDK
In the link , you can find the contents with
"To use the Windows SDK Configuration Tool in Visual Studio 2008".
Even though it has such title, you can use the same procedure also for VS2005.
Start the Windows SDK Configuration Tool by clicking Start, then All Programs, then Microsoft Windows SDK v7.1, and then Visual Studio Registration.
Right-click Windows SDK Configuration Tool and then click Run as
administrator.
In the Windows SDK Configuration Tool, in the list, select v7.1.
Click Make Current.

SAPI Version on Win XP Laptop

I have a Win XP Pro laptop. I wanted to use the Speech API in some of my VB.NET projects. However, when I opened the Add Reference dialog in Visual Studio, I got Microsoft Speech Object Library 5.0. I decided to try and update to SAPI 5.1
So I downloaded and unzipped SpeechSDK51MSM.exe to the default directory (C:\DOCUME~1\laptop\LOCALS~1\Temp). (Still not sure about the proper way to use this MSM file.)
Then I downloaded and installed SpeechSDK51.exe.
Still, when I go to Projects > Add Reference > COM , I get:
Microsoft Speech Object Library 5.0 C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.dll
And the resulting Interop.SpeechLib.dll file is version 5.0.0.0
I expected 5.1.x.x
Am I doing something wrong?
Thanks.

Resources