Multiple “could not be resolved” problems using Eclipse with minGW

孤人 提交于 2019-11-26 16:35:09

问题


I have recently installed (the latest builds of) 'Eclipse IDE for C/C++ Developers' and minGW (4.8.1) to help me to get back into C++ after a long time away.

I have added -std=c++11 to Other flags at C/C++ Build/Settings/Tool Settings/GCC C++ Compiler/Miscellaneous

I have a small program utilizing a number of C++11 features (e.g. using the chrono library, .emplace_back).

After Run I get multiple unresolved issues in the Problems window, as Pasted below).

Interestingly, the program does compile and run ok.

  1. With this, is there something I'm not setting up in Eclipse to resolve these issues?

  2. Does anyone know if there still an issue with the to_string() function in minGW (4.8.1) e.g. the following does not compile:

    window.setTitle("Bullets on screen: " + to_string(bullets.size()) + " currentSlice: " + to_string(currentSlice) + " FT: " + to_string(ft) + " FPS: " + to_string(fps) );
    

    It does compile using Visual Studio Express 2013 (though it has an issue with the accuracy of the chrono library, hence the switch to minGW).

    Thanks.

Eclipse 'Problem' window output:

Description Resource Path Location Type
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 19 Semantic Error
 Function 'now' could not be resolved Test2.cpp /Test2/src line 143 Semantic Error
 Function 'duration_cast' could not be resolved Test2.cpp /Test2/src line 160 Semantic Error
 Function 'now' could not be resolved Test2.cpp /Test2/src line 158 Semantic Error
 Symbol 'chrono' could not be resolved Test2.cpp /Test2/src line 8 Semantic Error
 Type 'std::centi' could not be resolved chronotest.cpp /chronotest/src line 20 Semantic Error
 Type 'std::chrono::seconds' could not be resolved chronotest.cpp /chronotest/src line 24 Semantic Error
 Type 'std::time_t' could not be resolved chronotest.cpp /chronotest/src line 48 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 47 Semantic Error
 Function 'now' could not be resolved chronotest.cpp /chronotest/src line 44 Semantic Error
 Function 'now' could not be resolved chronotest.cpp /chronotest/src line 39 Semantic Error
 Type 'std::chrono::system_clock' could not be resolved chronotest.cpp /chronotest/src line 38 Semantic Error
 Function 'end' could not be resolved Test2.cpp /Test2/src line 214 Semantic Error
 Symbol 'time_point' could not be resolved chronotest.cpp /chronotest/src line 38 Semantic Error
 Function 'end' could not be resolved Test2.cpp /Test2/src line 212 Semantic Error
 Type 'milli' could not be resolved Test2.cpp /Test2/src line 161 Semantic Error
 Method 'count' could not be resolved Test2.cpp /Test2/src line 161 Semantic Error
 Symbol 'duration_cast' could not be resolved Test2.cpp /Test2/src line 160 Semantic Error
 Symbol 'duration' could not be resolved Test2.cpp /Test2/src line 161 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 51 Semantic Error
 Symbol 'duration_cast' could not be resolved chronotest.cpp /chronotest/src line 30 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 30 Semantic Error
 Function 'to_time_t' could not be resolved chronotest.cpp /chronotest/src line 48 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 32 Semantic Error
 Function 'ctime' could not be resolved chronotest.cpp /chronotest/src line 50 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 33 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 22 Semantic Error
 Invalid arguments '
 Candidates are:
 __gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>> erase(__gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>>)
 __gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>> erase(__gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>>, __gnu_cxx::__normal_iterator<Bullet *,std::vector<Bullet,std::allocator<Bullet>>>)
 ' Test2.cpp /Test2/src line 212 Semantic Error
 Symbol 'ratio' could not be resolved chronotest.cpp /chronotest/src line 22 Semantic Error
 Invalid arguments '
 Candidates are:
 #0 remove_if(#0, #0, #1)
 ' Test2.cpp /Test2/src line 212 Semantic Error
 Symbol 'duration_cast' could not be resolved chronotest.cpp /chronotest/src line 28 Semantic Error
 Method 'count' could not be resolved chronotest.cpp /chronotest/src line 28 Semantic Error
 Method 'emplace_back' could not be resolved Test2.cpp /Test2/src line 191 Semantic Error
 Symbol 'ratio' could not be resolved chronotest.cpp /chronotest/src line 19 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 20 Semantic Error
 Symbol 'duration' could not be resolved chronotest.cpp /chronotest/src line 21 Semantic Error
 Function 'begin' could not be resolved Test2.cpp /Test2/src line 212 Semantic Error
 Symbol 'ratio' could not be resolved chronotest.cpp /chronotest/src line 21 Semantic Error

[Edit]: Apologies for not including error details for the remaining "to_string". The Eclipse 'Problem' window output has the following:

    Description Resource    Path    Location    Type
'to_string' was not declared in this scope  Test2.cpp   /Test2/src  line 170    C/C++ Problem
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
unused variable 'currentSlice' [-Wunused-variable]  Test2.cpp   /Test2/src  line 125    C/C++ Problem
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error
Invalid arguments '
Candidates are:
void setTitle(const sf::String &)
'   Test2.cpp   /Test2/src  line 170    Semantic Error
Function 'to_string' could not be resolved  Test2.cpp   /Test2/src  line 170    Semantic Error

回答1:


Go to Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros, etc. -> Providers -> CDT GCC built-in compiler settings, deactivate Use global provider shared between projects and add the command line argument -std=c++11.

The eclipse live code analysis does not share the same settings with the build compiler. You can also change the setting globally (not just for the project) in Window -> Preferences -> C/C++ -> Build -> Settings -> CDT GCC Built-in Compiler Settings.

Edit: You need to #include <string> to use std::to_string.




回答2:


I'm adding a few details to the answers given by @Nabla and @Enissey.

When adding the command line argument, for example, CDT GCC Built-in Compiler Settings Cygwin in Global preferences,

${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"

do it like so,

${COMMAND} ${FLAGS} -E -P -v -dD -std=c++11 "${INPUTS}"

To rebuild the index, right-click on your project, go under the Index sub-menu, and choose "Rebuild."

In my case, I made the changes globally and rebuilt the index.




回答3:


Re download the gcc compiler from:

http://www.equation.com/servlet/equation.cmd?fa=fortran

install it in c:\minGW folder use new worksapce / fresh eclipse setting , it work like a charm!

Don't forget to restart before trying , re build and set etc.

as well to set MinGW as a default tool chain windows -> preferences -> New C++.. ->set MinMG as a tool chain preferred.

If you cannot see it on the list , deselect the "show project types...." as well when creating the project.



来源:https://stackoverflow.com/questions/21065616/multiple-could-not-be-resolved-problems-using-eclipse-with-mingw

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!