找不到 CPP 中来自外部源的函数 (Qt)

Functions from external source in CPP not being found(Qt)

本文关键字:函数 Qt 外部 CPP 找不到      更新时间:2023-10-16

在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,所以也许我错过了一些东西,但我不明白为什么当我可以看到源文件作为我项目的一部分并知道它的代码时,我的函数未定义。

你需要这个

extern "C"{
#include "platform.h"
}

这允许 C++ 编译器和链接器正确链接用 C 编写的函数