与QT-Creator一起编译和链接C ++和C程序

问题描述 投票:1回答:2

所以我有服务的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 \

所以我想我必须添加一些标志才能正确编译,但究竟我错过了什么?谢谢您的帮助!

c++ c qt qt-creator
2个回答
0
投票

您可能在头文件的末尾缺少一个#endif


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.