2016-01-24 100 views
0

所以我有服務的C++文件,基本上需要在我的程序的C++部分完成後調用C函數。所以,如果有一種方法可以神奇地「啓動C文件」(我希望你明白我的意思),我也很樂意聽到這個消息。現在到我的實際問題:我試圖在主C++文件的主函數結尾處調用C函數。我已經看到了這一切Call a C function from C++ code,並試圖做的一切正確的方式,爲C文件我的頭文件看起來有點像這樣:編譯和鏈接C++和C程序連同QT-Creator

#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「文件夾/ file.h」

但我發現了,當我試圖使用,把foo()函數從一個未定義的引用錯誤我C文件。我的.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 \ 

所以我想我必須添加一些種類標誌爲它被正確編譯,但是我錯過了什麼?感謝您的幫助!

+0

你重新運行qmake的Qt Creator中? (我想這就是你正在使用的) – owacoder

+0

是的,這就是我正在使用的。我只是這樣做,但不幸的是沒有改變。 – user3839833

+0

運行qmake後,嘗試重建項目。如果代碼很好,它應該正確構建。 – owacoder

回答

0

你可能會丟失一個更#ENDIF在你的頭文件的

0

你需要明確地運行QMAKE然後末期重建

+1

添加更多的細節 – Billa