簡體   English   中英

從C程序調用C ++函數

[英]Calling a C++ Function from C Program

我正在努力將用C ++編寫的函數添加到用C編寫的大型程序中。

我曾嘗試將C程序中包含的所有代碼都包含在外部“ C”塊中,但是當我使用g ++進行編譯時,仍然會遇到來自嘗試將C編譯為C ++的編譯器的錯誤。 我已將extern“ C”塊添加到所有標頭和.c文件,如下所示:

#ifdef __cplusplus
extern "C"
{
#endif

//C code here

#ifdef __cplusplus
}
#endif

錯誤看起來像這樣:

./sortcodes/oci.c:在函數'int GetSpecList(ClientData,Tcl_Interp *,int,Tcl_Obj * const *)'中:./sortcodes/oci.c:188:25:錯誤:'init'未命名類型static init = TRUE;

如果刪除我的C ++函數調用並僅使用gcc編譯C程序,則不會發生這些錯誤。

如果我刪除外部的“ C”塊並使用選項進行編譯

gcc -std = c ++ 0x -lstdc ++ -std = c ++ 11

我收到類似下面的錯誤,其中C ++標志顯然被忽略了

./Event_Reader.cpp:9:20:致命錯誤:iostream:沒有這樣的文件或目錄#include

是否有我遺漏或誤解的選項? 任何意見,將不勝感激。

首先,要編譯c ++代碼,必須使用g ++或clang ++之類的c ++編譯器。 然后,您需要使用extern "C"鏈接聲明所需的c ++函數。 此時,您可以從C代碼中調用該函數。 有關具體示例,請參閱如何從C調用C ++函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM