Include directories aren't configurable via Tools/Options anymore. I see no way to do that via Solution Properties also. I have set INCLUDE environment variable, restarted VS but cl.exe (rc.exe really) still misses a header file.
fatal error RC1015: cannot open include file 'winres.h'.
C:> echo %INCLUDE%
C:\Program Files\Microsoft Platform SDK\Include\mfc
C:> ls "C:\Program Files\Microsoft Platform SDK\Include\mfc\WINRES.H"
WINRES.H <-- it exists
Related
I'm trying to follow the instructions here to add PGO for my project. After I added the /GENPROFILE flag, I start getting the link error:
LINK : fatal error LNK1104: cannot open file 'pgort.lib'
After debugging it a bit, I believe the problem is that my Library Directories (found under VC++ Directories tab) has a value of $(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) which is evaluating to:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\lib\spectre\x64
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\atlmfc\lib\spectre\x64
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\lib\x64
C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\UnitTest\lib
C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.7.2\lib\um\x64
It looks like the .\spectre\x64 paths don't have the pgort.lib library, but the non-spectre path does:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\lib\x64
What do I do to fix this? I find it hard to believe that if I'm using the spectre binaries (which I am not even sure how/why I am in the first place) that I can't optimize my project.
BTW, I tried this on a machine with Enterprise VS installed and it's the same. So this isn't specific to Community edition.
I ended up updating my build configuration/scripts to dynamically update the LibraryPath to add the appropriate, architecture-specific version of $(VC_LibraryPath_VC_x64_Desktop) when compiling for PGO.
I am using Visual Studio 2017. When I try to build a solution, I encounter this error:
Cannot find the resource compiler DLL. Please make sure the path is correct.
I checked my system, and found that the v7.0, v8.0, v8.0A, v8.1A, and v10.0A SDKs are installed on my machine. I checked my project properties, and the default SDK is v8.0
Me too, i have only the "windows 10 sdk version 10.0.15063.0" installed, and solved after:
Copy rddll.dll from:
c:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\rcdll.dll
to:
c:\Program Files (x86)\Windows Kits\10\bin\x86\
ref link: https://developercommunity.visualstudio.com/content/problem/43024/ide-cannot-find-the-resource-compiler-dll-rcdlldll.html
Just a temporary workaround, but it works.
Edit:
Run Visual Studio Installer from start menu, and click Update, after a while it's done, all thing worked.
it's doesn't need to copy file any more.
you could copy from
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rcdll.dll
to
C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\x64\rcdll.dll
and copy from
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\rcdll.dll
to
C:\Program Files (x86)\Windows Kits\10\bin\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\x86\rcdll.dll
The reason is that Visual Studio cannot find the requested files.
You have to (re)install or repair the requested version through Visual Studio Installer.
You can reach that through Visual Studio menu bar -> Tools -> Get Tools and Features -> Individual Components -> find and tick the respective {version} tools to install and then click "Modify".
It should work after that. Best of luck.
you can just simply change the compiler from resource compiler to C / C++ Compiler and you can do that by simply making a resource and you will face that error, after that right click the empty resource that have been generated and on the folder of resources right click the [nameofyourproject].rc and then choose properties and from item type change it to C / C++ Compiler and then delete that resource and create a new one and you will find it works fine with you.
When I compile my project using msbuild command with useenv option to include directory I cannot compile my project. It doesn't include the directory in INCLUDE environment variable. My script is as follows,
cd /d C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
call vcvars32.bat
SET INCLUDE="C:\Program Files\CA\SCM\HSDK\include";%include%
SET LIB="C:\Program Files\CA\SCM\HSDK\lib";%lib%
cd /d D:\vivilk\H12_Upgrade
echo "Building H12Int"
cd Source\H12Int
msbuild H12Int.sln /p:UseEnv=true;Configuration=Release /t:Clean,Build
This give the error,
fatal error C1083: Cannot open include file: 'hsdk.h': No such file or directory
hsdk.h is a file in C:\Program Files\CA\SCM\HSDK\include. So that means it has not identified the include path.
But If I compile this project using Visual Studio 2010 IDE by setting this include and lib directory in Property pages it works. Whats wrong with my build script?
At last I could solve the issue by removing quotation marks around include directory (C:\Program Files\CA\SCM\HSDK\include).
I have a stupid question to ask. I have just started learning F#, and I am trying to compile some basics examples (such as HelloWorld.fs).
I created a simple F# file whose path is: C:\FSharp\HelloWorld.fs.
In order to compile it, I used the full path of the F# compiler as follows:
C:\FSharp>"C:\Program Files\Microsoft F#\v4.0\fsc.exe" HelloWorld.fs
It worked perfectly.
However, I do not want to keep writing the full path of the complier: C:\Program Files\Microsoft F#\v4.0\fsc.exe. I tried to add it to Windows path,but I keep getting the error fsc is not recognized as internal or external command.
How can I create a shortcut word for F# compiler so that I don't have to use the full path everytime I need to compile a program?
For those arriving here in 2019 having received F# as a component of Visual Studio 2017. The location of the F# compiler is as follows:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe
Take careful note of the Version Type (Community in this case) and adjust yours accordingly.
You don't really need to create a shortcut for this, you just need to add the folder containing fsc.exe to your PATH variable.
When you open the command prompt, run this:
set PATH=%PATH%;"C:\Program Files\Microsoft F#\v4.0\"
or, if you're using a 64-bit version of Windows:
set PATH=%PATH%;"C:\Program Files (x86)\Microsoft F#\v4.0\"
The most recent version of fsc.exe can be found in these locations :
"C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0" // as of Aug 2014
"C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0" // 2013
I tried setting it to my path, but unfortunately it did not work. Tried logging off/restarting etc. I believe it is because of security measures in place on my work computer.
For other people having similar issues, I found that setting the alias not only worked but was more preferable over other methods.
set-alias fsi "C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\fsi.exe"
set-alias fsc "C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\fsc.exe"
Now the commands don't have the annoying .exe file extension.
Helpful in getting setup was this article on creating persistent aliasing for powershell.
http://www.powershellpro.com/powershell-tutorial-introduction/tutorial-powershell-aliases/
I can confirm that adding the directory to your PATH variable should do the trick (works on my machine!) Note that you may need to restart any opened command line (or, just to make sure, the system) until the change is taken into account if you change the PATH variable in system properties.
You could also create a bat file with something like:
echo off
"C:\Program Files (x86)\Microsoft F#\v4.0\fsc.exe" %*
And then make sure the bat file is somewhere in your PATH. But the bat file can have a different name (say fsharpc.bat), in case there is some name clash between the standard name fsc and something else on your system...
I have not been coding in MSVC lately. I have been assigned an old code that has lots of errors but most of the missing definitions are of Windows API.
For example, LPHANDLER_FUNCTION_EX is not defined and is causing C2061 compile error. But I already included Winsvc.h or Windows.h. I know that this is just a definition, I checked my C:\Program Files\Microsoft SDK\ for the definition can be found on the Winsvc.h. So I added the SDK on the directory list (Tools > Options > Directory Tab).
I also downloaded the Windows SDK February 2003 update which is the last version that works with msvc6. (ref)
Just for completeness, My PC is Windows XP SP3. Microsoft Visual C++ Enterprise Edition with SP6 installed. I also installed the Windows SDK February 2003 update.
Any ideas?
I was able to solve this by fixing the order of the include directory via Tools > Options > Directory Tab.
Before the VC98 folder was on top of the SDK.
1st C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
2nd C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
3rd C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
4th C:\Program Files\Microsoft SDK\include
Just place the SDK directory to the top of the list and it works.
The suggestion to use /E option by jamesdlin was helpful. Also I set the /E option in the Project Settings > Library Tab > Project Option textbox. The log would be placed in the .plg file inside the project folder.
This would also apply to missing lib file. Set the directory to the SDK directory for library.