error MSB6006: "CL.exe" exited with code 2 - c++

I'm writing with visual c++ and when I compile this error occures:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error MSB6006: "CL.exe" terminato con il codice 2.
Does anyone know why?
Thanks in advance!

You can actually see the proper error messages instead of Microsoft's arbitrary error codes. But since the error list is always forcibly made visible when there are errors, it isn't quite so obvious. Next to the tab Error List is another tab Output, which shows the raw error output. I'm not sure if that tab exists in all versions since I'm using 2019, but there might be something very similar in older versions anyways. Differently named perhaps, or an entirely separate window instead of grouped with Error List.
In the case of another answerer here that exact tab would've shown: error C4700: uninitialized local variable 'm' used
Which would have saved him from having to dig through all his code. =]
And if you forget a return value for a function that requires it, you'll see: error C4716: 'foo': must return a value

This happened me for a variety of different reasons:
1) I forgot to add a return statement to a non-void function.
2) I tried to use an uninitialized pointer.
3) I wrote a loop like for(int i=i;...) instead of for(int i=0;...)
You can check your code for these and it may help.

I got the same error when I forgot the return statement in the following method:
char SpiRAM::write_byte(int address, char data_byte)
{
assert(address >= 0);
assert(address < SRAM_SIZE);
_sram[address] = data_byte;
return data_byte;
}

I get this bug in v110 (Visual studio 2012)-Compiler with the following code, which contains a wrong for-based loop.
class A
{
int b;
};
int main(int argc, char* argv[])
{
A inst;
for (auto &i : inst)
{
}
return 0;
}
PS: v140 (Visual Studio 2015) shows the correct error:
error C3312: no callable 'begin' function found for type 'A'
error C3312: no callable 'end' function found for type 'A'

This error occured to me with C++ code with visual studio 2019 because I did not initialize my for-loop correctly.
I did:
for (int m; m < bytewidths + 1; m++) {}
rather than
for (int m=0; m < bytewidths + 1; m++) {}
I think that the way to fix this problem is to solve your recent code manually

Could also be an actually deleted header or source file, still listed in your project. Just check for such files.
I deleted a Header and Source file using the system explorer. VS apparently doesn't recognize the absence of deleted files and tries to compile them, till you reload your project.
Reloading the project worked for me.

Just wanted to add another case where this happens with Visual C++ 2019 (16.1.4):
...
char *s;
for(int i = 0; i < n; ++i)
{
if(i == 4) // we know n is going to be >= 4 but Visual C++ doesn't
s = getStringPointerFromSomewhere();
}
puts(s);
Visual C++ will print a message in the Output: potentially uninitialized local pointer variable 's' used, but crash instead of reporting it as a normal error or warning (arguably this should be a warning, since it's perfectly legal C code).
The solution for this one is to just assign s to NULL after declared:
char *s = NULL;
(So... just use the probably good habit of initializing pointers and other variables when declared I guess.)

I got this error because I had misspelled a filename when I save it.* Incidentally, this save was after having inserted a few for loops, which sent me on a wild goose chase because those can be a source of this error as well.
Sahbi's tip to look at the Output tab instead of just the general Error Code tab was very useful to me! I used the View menu to find and display the Output tab. It read the following:
1>------ Build started: Project: C867 Performative Assessment, Configuration: Debug x64 ------
1>Security_Student.cpp
1>c1xx: fatal error C1083: Cannot open source file: 'Security_Student.cpp': No such file or directory
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(429,5): error MSB6006: "CL.exe" exited with code 2.
1>Done building project "C867 Performative Assessment.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I had saved the file as 'Securtiy_Student.cpp'.*
I'd comment and upvote, but I don't have the rep yet.
*This wouldn't have been a problem if the correctly spelled file had not also been deleted, because the compiler would have just ignored the misspelled file and used the previous version that was spelled correctly. However, I'm also getting a weird bug with Visual Studio where it will occasionally decide that one of my files is new when I try to save it and must "Save as..." But, then when I accept that action, it says the file already exists, but if I try to replace it with the save, it says you can't replace it because it's being used. So, the solution has been to paste the file into a text file, decline to save the file in the Visual Studio solution, erase the solution file, create a new file, paste the text into it, and save into the solution again. Anyway, I will post this problem elsewhere, but I wanted to give context for a sneaky way one could get the error in this thread from a misspelled filename.

You should check your your source files; it's probable that the compiler can't find the source file maybe you typed the wrong name. eg writing #include <isotream> instead of #include <iostream> will cause the problem.

Related

"Pointer to reference" error in Visual Studio is not displayed by filename where it occurs

Some errors in Visual Studio are not displayed by the filename of the source code where they are created, which makes them difficult to find and debug.
In this particular example, I have the error pointing to #include <vector> header, but I cannot trace it to the source file where the actual code error is. Error C2528 'data': pointer to reference is illegal c:\program files (x86)\microsoft visual studio 14.0\vc\include\vector 1246
If this was a runtime error, I would be able to use the Call Stack to see where in the code the runtime crash occurred.
Is there a similar way to find this error with compiler errors? Or am I stuck looking through source code to see where the error can potentially be manually?
Just for information, this is not a post asking how to fix this particular error, but a post asking how to find the source file where the errors occur quickly. Therefore I am not posting any source code, the error provided here is an example of the type of error that would cause the confusing compiler messages,
Look in the Output tab and select 'Build' from the dropdown. You should see a 'traceback' of your error(s) there. As you have observed, the Error List tab just displays the line provoking the error.

Declaring a static pointer in class [duplicate]

While compiling on x64 plattform I am getting following error:
c:\codavs05\hpsw-sc\ovpacc\tools\codaaccesstest\coda_access.cpp(1572): fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'f:\dd\vctools\compiler\utc\src\p2\sizeopt.c', line 55)
To work around this problem, try simplifying or changing the program near the locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
------ Build started: Project: asyncexample, Configuration: Release Win32 ------
If I change settings to preprocessor file (Yes) i am not getting any error.
About my environment: Upgrading Microsoft Visual Studio 2005 to 2010
Please help.
I have had this problem with VS2015 while building locally in Windows.
In order to solve it, I deleted my build folder (Output Directory as seen in Properties/General) and rebuilt the project.
This always seems to help when strange things happen during the build.
I’ve encountered this error many times in VC++. Do the following steps. They’ve sometimes helped me with this issue:
Take a look at the exact location, pointed out by compiler error.
Find any external types or classes used there at that location.
Change the order of “include path” of those files found in step 2 and rebuild the solution.
I hope that help !!!!
I am getting same error with VC2012. Setting up the project properties Optimization to Disabled (/Od) resolved the issue.
In my solution, i've removed output dll file of the project, and I've made project rebuild.
I encountered the same error and spent quite a bit of time hunting for the problem. Finally I discovered that function that the error was pointing to had an infinite while loop. Fixed that and the error went away.
In my case was the use of a static lambda function with a QStringList argument. If I commented the regions where the QStringList was used the file compiled, otherwise the compiler reported the C1001 error. Changing the lambda function to non-static solved the problem (obviously other options could have been to use a global function within an anonymous namespace or a static private method of the class).
I got this error using boost library with VS2017. Cleaning the solution and rebuilding it, solved the problem.
I also had this problem while upgrading from VS2008 to VS2010.
To fix, I have to install a VS2008 patch (KB976656).
Maybe there is a similar patch for VS2005 ?
I got the same error, but with a different file referenced in the error message, on a VS 2015 / x64 / Win7 build. In my case the file was main.cpp. Fixing it for me was as easy as doing a rebuild all (and finding something else to do while the million plus lines of code got processed).
Update: it turns out the root cause is my hard drive is failing. After other symptoms prompted me to run chkdsk, I discovered that most of the bad sectors that were replaced were in .obj, .pdb, and other compiler-generated files.
I got this one with code during refactoring with a lack of care (and with templates, it case that was what made an ICE rather than a normal compile time error)
Simplified code:
void myFunction() {
using std::is_same_v;
for (auto i ...) {
myOtherFunction(..., i);
}
}
void myOtherFunction(..., size_t idx) {
// no statement using std::is_same_v;
if constexpr (is_same_v<T, char>) {
...
}
}
I had this error when I was compiling to a x64 target.
Changing to x86 let me compile the program.
Sometimes helps reordering the code. I had once this error in Visual Studio 2013 and this was only solved by reordering the members of the class (I had an enum member, few strings members and some more enum members of the same enum class. It only compiled after I've put the enum members first).
In my case, this was causing the problem:
std::count_if(data.cbegin(), data.cend(), [](const auto& el) { return el.t == t; });
Changing auto to the explicit type fixed the problem.
Had similar problem with Visual Studio 2017 after switching to C++17:
boost/mpl/aux_/preprocessed/plain/full_lambda.hpp(203): fatal error C1001: An internal error has occurred in the compiler.
1>(compiler file 'msc1.cpp', line 1518)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
Solved by using Visual Studio 2019.
I first encountered this problem when i was trying to allocate memory to a char* using new char['size']{'text'}, but removing the braces and the text between them solved my problem (just new char['size'];)
Another fix on Windows 10 if you have WSL installed is to disable LxssManager service and reboot the PC.

What's the cause of a D8049 error in visual studio?

I'm creating a project with openframeworks (the full source is here: https://github.com/morphogencc/ofxAsio/tree/master/example-udpreceiver), and the empty project seems to compile fine.
I added the ASIO library, and a few header classes, and now the project seems to be give me the following error:
1>------ Build started: Project: example-udpreceiver, Configuration: Debug x64 ------
1> main.cpp
1>cl : Command line error D8049: cannot execute 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\c1xx.dll': command line is too long to fit in debug record
1>cl : Command line error D8040: error creating or communicating with child process
I couldn't find any examples of error D8049 on stackoverflow or even on Microsoft's pages, and google turned up painfully few results. The only remotely useful one was this github issue:
https://github.com/deplinenoise/tundra/issues/270
But I'm still not sure what's causing the problem. Is anyone familiar with this error, and can recommend a method for troubleshooting what's causing it?
thanks in advance!
For me, working with UE4, this was an intermittent error.
I added "bLegacyPublicIncludePaths = false;" to the innermost block of project.Build.cs and recompiled without errors.
Then I removed that line and compiled again w/o errors.
The error message suggested adding "DefaultBuildSettings = BuildSettingsVersion.V2;" to project.Target.cs which worked.
This is a bit of a weird sounding error, as it is from essentially internally generated data. However, you do have control over that. Taking the error message at face value, you probably have many/lots of defined symbols passed in on the command line (or the the ones you do have have lengthy definitions), or you may have some lengthy file paths.
If you look under the project properties, one of the selections under the C++ section is "Command Line", which will show you exactly what gets passed to the compiler. When you view that you can see where you have many or lengthy parameters, and then make changes to shorten them.
Too many defines? Put them in a header (possibly stdafx.h) and include them that way.
Long file paths? Shorten the paths, put the files somewhere else, or set up file system aliases to your real directories that use shorter paths.

error MSB6006: "CL.exe" exited with code 1 after adding template function or class

Asking this question preemtively because there is not much to be found about this error code. It is rather trivial to solve, but cost me a lot of time to diagnose because no proper error message is given.
So what happened?
I added templated functions to my project
Now when the project compiles, A message pops up saying that CL.exe had a problem and needs to be closed
Visual Studio aborting the compilation with error MSB6006: "CL.exe" exited with code 1
The problem were syntax errors in my template functions. Who could have guessed that.
However, it was hard to find out, because these did not get reported. See my answer for how to determine which functions are defective.
The templated functions were in a .cpp included in the header, however, defining them completely in the header did not make any difference.
// foo.h
template <typename T>
void foo();
...
#include "foo.cpp"
// foo.cpp
template <typename T>
void foo()
{
...
}
First you need to compile all .cpp files that include the templated functions seperately (select one in the project explorer, right click and "compile").
For me, the first hint was that some of them compiled, while for others cl.exe crashed.
The next step was to create a bogus.cpp file with just one function, where one by one I added calls to every templated function I created. After adding one: recompile. This went well until I got to the defective one, now the bogus.cppalso crashed cl.exe. Jackpot.
The last job was fixing the syntax error, which is annoying without error messages, but once this is done, bogus.cpp will compile again. Return to adding more function calls there until you have everything covered.
Hope I could help.
What fixed it for me was that I had two instances of Visual Studio running, and while one of them was in the middle of a debugging session, I tried to compile the other instance. Stopping the debugging session fixed this error for me.
Encountered the same issue with simple form and VS2019. This does not seem to be related necessarily to a code issue, but potentially with VS itself.
Took fresh checkout of code, built OK.
Added new tab to existing form, CL.exe exited with code 1 error.
Reverted code and added changes until error presented then could not get error to clear, event after clearing build output directories.
Completely reverted build - CL.exe exited with code 1 error.
Performed update of VS to 16.4.0 and restart PC - project builds OK.

Visual studio doesn't compile

Last friday everything worked perfect. But on Monday I got this error message in Visual Studio.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error MSB6006: "CL.exe" exited with code -1.
Doesn't matter what I do that I always get same error. I've repaired VS , uninstalled VS , changed the SDK , the plugins.. everything. If I execute cl.exe manually I dont get any error.
Have found this thread:
http://connect.microsoft.com/VisualStudio/feedback/details/724154/error-msb6006-cl-exe-exited-with-code-1073741819
I thought It was written by me! but there's no solution inside it.
Thanks.
The important parts of this message are:
CL.EXE : This means the error occurs during a compilation step. It's not a pre-build step.
Code -1 : This means the error is not the same as the one you linked (which was -1073741819).
The first thing to do is figuring out when it fails. What file is being compiled? Create the default "Hello, World" project and compile that. If it works: problem is input dependent. If not: what's the problematic input? Can you compile a single file of your project? If you can't find any, pick one and turn on "pre-processing only". Does it at least pass the pre-processor phase? Turn on LTCG. (link-time code generation, CL won't create x86 code). Does it work now?