gpt4 book ai didi

c++ - 未解析的外部符号 "public: void __thiscall..."

转载 作者:行者123 更新时间:2023-11-28 03:58:22 24 4
gpt4 key购买 nike

我正在使用 boost::function 将函数传递给 Button 构造函数,以便它保存该函数。每当它被激活时调用它。

typedef boost::function< void() > Action;

在我的 TitleState 中,我构建了一个这样的 Button。

  m_play( 
ButtonAction, // This is where I pass a function to Button's Action argument
sf::Vector2f( 500, 400 ),
sf::IntRect( 500, 400, 700, 500 )
)

其中 ButtonAction 是一个 static void 函数,私有(private)地保存在 TitleState 的 header 中,在实现文件中定义为通过 std::cout 简单地输出到控制台(只是作为它是否工作的测试) .

在我的代码中,如果鼠标单击 TitleState 的 HandleEvents 函数中的按钮,程序将调用该按钮的 Activate 函数,如下所示。

void Button::Activate() const {
m_action(); // m_action is the Action member that holds the ButtonAction I passed earlier
}

问题是,当程序尝试链接时出现此错误....

在函数“public: virtual void __thiscall TitleState::HandleEvents(void)”(? HandleEvents@TitleState@@UAEXXZ)

除了链接器找不到函数的定义之外,我不确定是什么问题。一切都是 #included 或正确声明的。任何帮助表示赞赏。谢谢。

附言当我使用 BoostPro 安装程序时,我只安装了单线程的东西,没有安装多线程的东西。这可能是它不起作用的原因吗?我读到当库以不同方式链接时可能会出现链接器问题。如果这可能是个问题,我会补充说我也在使用 SFML 库。

最佳答案

链接程序时添加库选项:

g++:

g++ -L/your/library/path -lyour_library_name

VC++:

关于c++ - 未解析的外部符号 "public: void __thiscall...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com