"string could not resolved" error in Eclipse for C++ (Eclipse can't resolve standard library)
C++EclipseC++ Problem Overview
I have the following code in eclipse for c++ and it's underlining string
and cout
and saying could not be resolved.
#include <string>
#include <iostream>
using namespace std;
int main()
{
string s;
s = "hello world";
cout << s;
return 0;
}
Anyone know why?
edit: screenshot
Edit: I have found a solution thanks everyone (see answers).
C++ Solutions
Solution 1 - C++
I've also had this issue.
I've found out that it is because Eclipse couldn't find all include headers.
Easy fix:
This simple and quick solution might fix your problem (for example, when the Eclipse project was moved to a different location on disk, then imported again in Eclipse), if not, jump to the next section (Detailed fix).
- Go to project > properties > C/C++ Build > Tool Chain Editor
- Change the Current toolchain to any other value, click Apply
- Set the Current toolchain to the original value, click Apply
- Compile your project
Detailed fix:
Before proceeding check if your toolchain is properly installed.
- Switch to a new workspace.
- Remove .cproject file and the ".settings" folder
- Import your project as Makefile project (or just create a new if you prefer CDT Build system)
- Go to project-> properties->C/C++ Build->Toolchain editor. Choose your toolchain.
- Press project->Index->Rebuild
- If the problem isn't resolved, change system language to English and try the above steps again.
Outdated answer:
This answer has been outdated. Proceed if nothing of the above helps
If the previous steps don't help we'll need to setup include directories manually (not recommended though)
- Search all unresolved headers using "Right click on Project > Index > Search for unresolved includes".
- Search their locations using "find /usr/include/ -name vector -print"
- Put include folder paths to "Right click on Project > Properties > C++ General/Path and Symbols/C++"
- Run "Right click on Project > Index > Rebuild"
- Start from step 1 if there are any unresolved symbols left.
Solution 2 - C++
The problem was that I needed to have both minGW and MSYS installed and added to PATH.
The problem is now fixed.
Solution 3 - C++
I've just replied to the related question given by Vanuan (https://stackoverflow.com/questions/5977542/eclipse-cdt-unresolved-inclusion-of-stl-header), and this is my answer :
You could also try use "CDT GCC Built-in Compiler Settings". Go to the project properties > C/C++ General > Preprocessor Include Path > Providers tab then check "CDT GCC Built-in Compiler Settings" if it is not.
None of the other solutions (play with include path, etc) worked for me for the type 'string', but this one fixed it.
Solution 4 - C++
You need to ensure your environment is properly setup in Eclipse so it knows the paths to your includes. Otherwise, it underlines them as not found.
Solution 5 - C++
I had the same problem. Adding include path does work for all except std::string.
I noticed in the mingw-Toolchain many system header files *.tcc
I added filetype *.tcc as "C++ Header File" in Preferences > C/C++/ File Types. Now std::string can be resolved from the internal index and Code Analyzer. Perhaps this is added to Eclipse CDT by default in feature.
I hope this helps to someone...
PS: I'm using Eclipse Mars, mingw gcc 4.8.1, Own Makefile, no Eclipse Makefilebuilder.
Solution 6 - C++
I had the same problem. Change the CurrentBuilder in Properties/C/C++ Build/ToolChainEditor to another value and apply it. Then again change it the original value. It works.
Solution 7 - C++
I had this issue with AOSP (clang).
Add external\libcxx\include
to includes and _LIBCPP_COMPILER_CLANG
to symbols
Solution 8 - C++
Hello here is a simple solution,
Just go to File -> Convert to a C/C++ Autotools Project Select your project files appropriately.
Inclusions will be added to your project file
Solution 9 - C++
Set ${COMMAND}
to g++
on Linux
Under "Preprocessor Include Paths, Macros, etc." and "CDT GCC Built-in Compiler Settings" there is an undefined ${COMMAND}
variable if you imported the sources from an existing Makefile project.
Eclipse tries to run that command to parse its stdout to find headers, but ${COMMAND}
is not set by default, and so it is not able to do so.
I have explained this in more detail at: https://stackoverflow.com/questions/10373788/how-to-solve-unresolved-inclusion-iostream-in-a-c-file-in-eclipse-cdt/51099533#51099533