неопределенная ссылка eeror [abi: cxx11] при использовании карты и компиляции с clang - PullRequest
0 голосов
/ 20 июня 2020

Я начал работать над языковым парсером и наткнулся на неопределенную ссылку, когда использовал std :: map

/usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:106: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
    /usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:107: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
    /usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:108: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
    /usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:109: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
    /usr/bin/ld: parser.tab.o:/home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:113: more undefined references to `ProgramObj::envCnfgTable[abi:cxx11]' follow

Это сообщение об ошибке, которое я получаю, а код следующий:

static void resetEnvCnfgTable()
  {
    envCnfgTable.insert(std::pair<std::string,std::string>("version", "0.0") );
    envCnfgTable.insert(std::pair<std::string,std::string>("description", "no description"));
    envCnfgTable.insert(std::pair<std::string,std::string>("real-type", "64-bit"));
    envCnfgTable.insert(std::pair<std::string,std::string>("whole-type", "32-bit"));
    envCnfgTable.insert(std::pair<std::string,std::string>("random-type", "mersenne"));
  };
  static void printEnvCnfgTable()
  {
    for(std::map<std::string, std::string>::iterator it = envCnfgTable.begin(); it != envCnfgTable.end(); it ++)
    {
      std::cout << it -> first << "   " << it -> second << '\n';
    } 
  };
  static std::map<std::string, std::string> envCnfgTable; 

Я использую:

clang++ -g -c -Wall -std=c++11  -o ../../parts/grammar/Program.o Program.cc

Есть предложения? Я видел несколько похожих тем, но не смог решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...