When I decided to switch from CLion to VS22, I found that the code analyzer swears at the new way of writing namespace, that avoid their nesting. I do not know how to make Visual Studio stop considering this an error, as a compiler I used clang and CMake to build, C++ standard is 23
Just for this issue, I suggest you don't use Clang and Cmake, create new project with MSVC and this problem will not occur.
Result:
Related
I have some C++ code that uses some version of Google's GTest framework. This code used to compile fine with Visual Studio 2015. I just upgraded to VS2017, and now I get a bunch of errors like this:
error C2039: 'tr1': is not a member of 'std'
error C3083: 'tr1': the symbol to the left of a '::' must be a type
Is some compiler option needed to use std::tr1 in VS2017?
One option is to re-enable TR1; do this by defining the macro _HAS_TR1_NAMESPACE, as briefly mentioned in this blog article. If you're using an MSBuild project then this is best done by way of your project's Preprocessor Definitions setting; or if you're using a precompiled header, by defining it at the top of said PCH.
A better option is to inform GTest that your compiler supports C++11 by defining the macro GTEST_LANG_CXX11 to 1 before including any GTest headers; then it will use std::tuple rather than std::tr1::tuple*. (GTest's C++11-detection logic is __cplusplus-oriented, which VC++ has not yet updated despite being mostly C++11 and C++14 compliant. I would say this is a bug in GTest since it supports VC++ elsewhere throughout the configuration logic.)
* Not to mention the other C++11 features, which is why this is by far the better option ;-]
Googletest release 1.8.1 fixes this issue (in combination with VS2017 15.8.5).
from some time visual c++ compiler not compiling my code, I tried to do things that are there: Visual Studio 2013 C++ not compiling changes
Cleaning soultion works in my case, but after compilation i must do it again and so always. I saw also Build solution options and build configuration and there are OK. I moved project, delete execute file but it also not helped me.
What I can do to fix it? :(
When I build a project by visual studio 2013, it runs properly. But I encounter following errors after building with visual studio 2015. How can I solve this problem?
fatal error C1001: An internal error has occurred in the compiler.
Command line error D8040: error creating or communicating with child process
C1001 is an "ICE", an Internal Compiler Error. It means your code generated a fatal bug in the compiler. Are you using VS 2015, VS 2015 Update 1, or VS 2015 Update 2?
One way to find which version of the compiler you have installed is to run the Developer Command Prompt for VS 2015 and then run the following command: cl -Bv and note which versions are reported. VS 2015 Update 2 is 19.00.23918.0
An "ICE" is always a bug. If your code is doing something wrong, the compiler should emit an error or a warning, not crash out. It's also possible your code is just fine, and there's been a new bug introduced in the compiler since VS 2013. There's been a lot of work done to the compiler to fully support C++11 as well as support the upcoming C++14/C++17 drafts.
You should file a bug on VS Connect. See this article for directions on creating a good repro. This blog post is also a great write-up of how to narrow down compiler problems.
In most cases, it's very difficult to repro an ICE with just a few lines of code, and is only triggered in very specific contexts. This is why the instructions above are all about providing a minimal repro that captures the essence of the problem. You can also try a newer build compiler to see if the problem has already been fixed.
Many thanks Walbourn. Your solutions are so effective. I resolved this problem by the following settings in visual studio 2015:
1- Disable c/c++->general->Multi-processor compilation
2- Disable c/c++->general->optimization
3- Disable c/c++->language->open mp support
The probable reason could be long project path.
Found a lot on this error already, but my case does not get matched with any yet.
I am building a solution (having many projects) in debug mode, and one of them is throwing this error, I am using VS2010 and language is C++, .net version 4.0, earlier this project was compiled in vs2008 and then VS2010, and it was all ok, now I got a new machine which has just VS2010 installed and now facing this error.
Main thing to notice is:
Properties settings:
Project Configuration->General->/CLR is chosen
In C++->General-> No CLR support
I am having these settings since past, it's running all fine in my old machine in VS2010 only in the same debug mode.
What to do?
I am using Visual Studio 2013.
I had similar symptoms for a very simple C program. In the project properties I changed the General / Platform-Toolset setting from "Visual Studio 2010" to "Visual Studio 2013 v120" and that got rid of this error for me.
As the error indicates, precompiled headers are not compatible with /clr-compiled files.
You can disable precompiled headers for the cpp files that are compiled with /clr or for the whole project (C/C++ -> Precompiled Headers -> Precompiled Header : Not Using Precompiled Headers). I'm not sure what the difference is but both seem to work for me.
Doc is not exactly wrong, but I'm betting that's not what's going on here.
Do you by any chance have something like THIS:
#using namespace boost::asio;
...instead of something like THIS?
using namespace boost::asio;
Both "using" and "#using" have valid roles in Visual Studio-- but if you mean the pure C++ language keyword, be sure you are using the former! The latter is indeed used for managed code. See here:
https://msdn.microsoft.com/en-us/library/yab9swk4.aspx
Getting this wrong in Visual Studio 2015 has the following effects:
BUILD OUTPUT:
1>thingy.cpp(3): error C2006: '#using': expected a filename, found 'namespace'
1>thingy.cpp(3): fatal error C1190: managed targeted code requires a '/clr' option
Note that attempting to "satisfy" this in a fit of 4:00 AM frustration by removing the "namespace" keyword and quoting the value will result in only the second error.
(I think that's worth mentioning, because as both Visual Studio and the C++ language specification continue to change, people try all kinds of syntax that they know shouldn't work, and if it suddenly compiles, just assume the spec or the tools have changed in some way they haven't had time to keep up with-- especially if the error messages seem to have something to do with "features" they couldn't care less about, and don't use.)
I downloaded zlib from their website and I have the link warning from the title. I also compiled zlib and still have same warning. Do you know how may I fix this? I don't like warning of any kind in my projects:)
I use Visual Studio 2010.
Apparently the compiler used to generate the .lib import for the DLL isn't entirely compatible with Visual Studio:
I thought MinGW can be a one-stop shop
that'll do what's needed, and we won't
need anymore the awkward two-tool
combination that we used to use around
zlib-1.2.3. It seems we need another,
even more awkward two-tool combination
now.
Cosmin Truta built a new version using Visual studio. It should fix the warnings.