所以我只是在 Board.h 和 Board.cpp 文件中创建了这个函数,而调用这些函数的其他类找不到它的定义等。其他文件也找不到这些函数的定义。
Board.h:
#pragma once
namespace Sexy
{
class Board
{
public:
void PlayVirtualTankMusic();
}
}
板.cpp:
using namespace Sexy;
void Board::PlayVirtualTankMusic()
{
...
}
然后是 JukeboxScreen.h,其中定义了函数和内容。还要提一下 GameApp 类具有公共的 Board 对象,并且 JukeboxScreen 具有指向 GameApp 对象的指针实例,从中获取 Board 对象。
点唱机屏幕.cpp
#include "GameApp.h"
#include "Board.h"
using namespace Sexy;
void JukeboxScreen::ButtonDepress(int buttonID)
{
...
mTheApp->mBoard->PlayVirtualTankMusic();
...
}
这是链接器错误的片段: 错误 LNK2019 无法解析的外部符号“public: void thiscall sexy::Board::PlayVirtualTankMusic(void)” (?PlayVirtualTankMusic@Board@Sexy@@QAEXXZ) 在函数“public: virtual void thiscall sexy::JukeboxScreen::ButtonDepress(int)”中引用)" (?ButtonDepress@JukeboxScreen@Sexy@@UAEXH@Z) 测试项目 C:\Users\Vasilije\source epos\测试项目\测试项目\JukeboxScreen.obj 1
大家有什么想法吗?
我正在尝试修复链接器错误,可能需要包含某些内容或重组我的代码。
这里
using namespace Sexy; void Board::PlayVirtualTankMusic() { ... }
您在全局命名空间中定义了名为
PlayVirtualThankMusic
的类的名为 Board
的方法。虽然班级是Sexy::Board
。 using namespace Sexy;
并不意味着接下来的所有内容都在该名称空间内,以防万一这就是您所期望的。您必须在命名空间中定义该方法:
namespace Sexy {
void Board::PlayVirtualTankMusic()
{
...
}
}
正如评论中提到的,所示的源文件应该有编译器错误(因为全局命名空间中没有
Board
)。当您报告链接器错误时,我想您根本没有编译源文件。您必须编译所有源文件,然后链接它们。