【发布时间】:2018-04-26 12:25:08
【问题描述】:
在 Qt 中,我希望在单击按钮时运行特定的功能。所以我做了一个按钮并使用“connect()”函数来运行一些子程序“initializeButtonPushed”
void MainWindow::initializeButtonPushed(){
initializePlatform();
}
足够简单。在文件“mainwindow.h”中有一行
#include "platform.h"
并且在platform.h里面是定义“void initializePlatform(void);”
在我的 c 源代码中,我还有一个 platform.c 文件,其中包含此函数的实际代码。
除此之外,我已经可以看到我的 Qt 项目的 .pro 文件包含了这些文件。
因此,鉴于此,编译器似乎应该能够找到这些文件,但是当我尝试编译我的代码时,我得到了错误:
undefined reference to 'initializePlatform()'
collect2:error: ld returned 1 exit status
我对cpp不太了解,我通常使用C,但这个程序需要Qt,所以也许我遗漏了一些东西,但我不明白为什么当我看到源文件时它说我的函数未定义作为我项目的一部分,并且知道它的代码在该文件中。
【问题讨论】:
-
未定义的函数是
initializePlatform()您确定链接了定义该函数的目标文件吗?仅仅包括正确的标题是不够的。链接器需要函数 definition.