C++11 链接器错误:未定义对函数的引用

C++11 链接器错误:未定义对函数的引用,c++11,g++,linker-errors,undefined-reference,C++11,G++,Linker Errors,Undefined Reference,当我试图编译代码时,我遇到了链接器错误 当我使用g++*.cpp-std=c++11-o run进行编译时,我得到以下错误: main.cpp:(.text+0x355): undefined reference to `Actions(mBoard&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::set<std::__

当我试图编译代码时,我遇到了链接器错误

当我使用
g++*.cpp-std=c++11-o run进行编译时,我得到以下错误:

main.cpp:(.text+0x355): undefined reference to `Actions(mBoard&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)'
collect2: error: ld returned 1 exit status
mAI.cpp
#包括“mAI.hpp”
set blackPieces={'r','n','b','q','k','p'};
std::set whitePieces={'R','N','B','Q','K','P'};
无效操作(mBoard常量和状态、字符串常量playerColor、设置移动列表)
{
//做点什么
}
元组转换(字符串索引)
{
//做不同的事情
}
主要的
#包括“mAI.hpp”
#包括“mBoard.hpp”
#包括
#包括
#包括
#包括
int main()
{
姆博德板;
设置移动列表;
字符串颜色=“白色”;

cout这听起来像是一个非常旧的gcc编译器。在早期版本的gcc和系统上安装的库的abi更改期间,这是一个问题

使用
-D\u GLIBCXX\u使用\u cx11\u ABI=0
并重新编译所有可能的帮助

另请参见本文档:

顺便说一句: 我可以用gcc 7.3.1(fedora)编译并链接你的代码,没有任何错误。在剪切和粘贴你的代码后,会出现一些未使用变量的警告,并且只添加了一个空的类。所以我相信你的代码没有问题

从文件中:

如果您在涉及std::u cxx11命名空间或标记[abi:cxx11]中的类型的符号的未定义引用方面遇到链接器错误然后,它可能表示您正在尝试将使用不同值为_GLIBCXX_USE_cx11_ABI宏编译的对象文件链接在一起。链接到使用旧版本GCC编译的第三方库时,通常会发生这种情况。如果无法使用新ABI重建第三方库,则需要用旧ABI重新编译代码


我把它放进去,得到了相同的链接器错误…完成了,完成了,没有改变。我可以看到main,但出于好奇,为什么在mAI.cpp中?包含了.hpp,它不会自动包含在那里吗?需要。顺便看看
#ifndef MAI_HPP
#define MAI_HPP

#include <iostream>
#include <set>
#include <tuple>
#include "mBoard.hpp"
using namespace std;

void Actions(mBoard const &state, string const playerColor, set<string> moveList);
tuple<int, int> Translate(string index);

#endif
#include "mAI.hpp"

std::set<char> blackPieces = {'r', 'n', 'b', 'q', 'k', 'p'};
std::set<char> whitePieces = {'R', 'N', 'B', 'Q', 'K', 'P'};

void Actions(mBoard const &state, string const playerColor, set<string> moveList)
{
    //Do some stuff
}

tuple<int, int> Translate(string index)
{
    //Do different stuff
}
#include "mAI.hpp"
#include "mBoard.hpp"
#include <set>
#include <tuple>
#include <string>
#include <iostream>

int main()
{

  mBoard dasBoard;
  set<string> moveList;
  string color = "White";

  cout<<"TEST - Translate: f6 to file, rank: ";
  tuple<int, int> test;
  test = Translate("f6");
  cout << get<0>(test) << ", " << get<1>(test) << endl;

  Actions(dasBoard, color, moveList);
  return 0;
}