【问题标题】:Compile and link C++ and C programms together with QT-Creator使用 QT-Creator 编译和链接 C++ 和 C 程序
【发布时间】:2016-01-24 17:55:25
【问题描述】:

所以我有多个 C++ 文件,基本上需要在我的程序的 C++ 部分完成后调用一个 C 函数。因此,如果有一种方法可以以某种方式神奇地“启动 C 文件”(我希望你知道我的意思),我也会很高兴听到这个消息。现在到我的实际问题:我试图在主 C++ 文件中的主函数末尾调用 C 函数。我已经看到了所有这些Call a C function from C++ code 并尝试以正确的方式做所有事情,我的 C 文件头文件看起来像这样:

 #ifndef H_FILE
 #define H_FILE

 #ifdef __cplusplus
 extern "C" {
 #endif

 void foo();
 void bar();

 #ifdef __cplusplus
 }
 #endif

然后我尝试在 C++ 文件中包含头文件:

 extern "C" {
 #include "folder/file.h"
 }

我还尝试了一个基本的#include "folder/file.h"

但是当我尝试使用我的 C 文件中的 foo() 函数时,我得到了一个未定义的引用错误。我的 .pro 文件看起来像这样:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Example
TEMPLATE = app
QMAKE_CXXFLAGS += -std=c++11

SOURCES += main.cpp\
folder/file.c \

HEADERS  += main.h \

所以我想我必须添加某种标志才能正确编译它,但我到底错过了什么?感谢您的帮助!

【问题讨论】:

  • 您是否在 Qt Creator 中重新运行了 qmake? (我假设这就是你正在使用的)
  • 是的,这就是我正在使用的。我只是这样做了,但不幸的是没有任何改变。
  • 在运行 qmake 后尝试重建项目。如果代码没问题,它应该可以正确构建。
  • 嗯,我想那是有问题的。 .pro 可以吗?我可能没有忘记什么?单击 Strg+Left Mouse Button 也会将我传送到 c 文件的 file.h 中的方法行。
  • 您应该确保在您的.c 文件中有foo()bar() 的定义。您也可以尝试将 C 头文件添加到您的 .pro 文件中,看看会发生什么。

标签: c++ c qt qt-creator


【解决方案1】:

你可能在你的头文件末尾少了一个#endif

【讨论】:

    【解决方案2】:

    你需要明确运行 qmake 然后重新构建

    【讨论】:

    • 添加更多细节
    猜你喜欢
    • 2014-12-10
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多