所以我有服务的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 \
所以我想我必须添加一些标志才能正确编译,但究竟我错过了什么?谢谢您的帮助!
您可能在头文件的末尾缺少一个#endif
你需要明确地运行qmake然后重建