This question already has answers here:
What happens with an extern inline function?

(2个答案)


6年前关闭。




我做了一个看起来像这样的函数:
//hpp
extern std::array<CPlayer, MAX_PLAYERS> PlayerArray;
inline CPlayer& Player(int playerid);
//cpp
std::array<CPlayer, MAX_PLAYERS> PlayerArray;
inline CPlayer& Player(int playerid)
{
    return PlayerArray[playerid];
}

但是在执行此操作时,出现链接器错误消息:
error LNK2001: unresolved external symbol "class CPlayer & __cdecl Player(int)" (?Player@@YAAAVCPlayer@@H@Z)

但是,当我删除inline关键字时,一切都可以正常编译。

为什么会这样?

最佳答案

将函数get内联,并作为独立函数从二进制文件中有效删除。

将实现移至 header 即可解决此问题。

关于c++ - 内联函数时链接器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21115570/

10-10 21:19