【发布时间】: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