簡體   English   中英

鏈接.cpp文件上的靜態庫

[英]Link a static library on a .cpp file

我正在嘗試編譯一些使用名為staticlib.a的靜態庫中實現的函數的代碼。 我還有名為staticlib.h的頭文件,其中包含該函數的聲明。 我的main,包含在main.cib文件中,包含staticlib.h,只調用該函數而不是其他函數。 所以我使用gcc main.c staticlib.a進行編譯,一切正常。 我需要一些c ++的功能,但如果我在main.cpp中正確更改main.c並以相同的方式編譯gcc main.cpp staticlib.a我的函數發生了未定義的引用。 我怎樣才能使這個工作? 為什么會出現這個問題? 我無法在我訪問的任何網站上找到解釋...謝謝你所有的回答。

你必須將庫中的函數定義為'C'函數,而不是C ++函數 - 在main.cpp中執行此操作

extern "C"
{
#include "staticlib.h"
}

C和C ++編譯方式不同,C ++使用名稱修改(在目標文件中嵌入C ++類型信息)。 要停止此行為以便可以從C ++鏈接到C代碼,可以在包含C頭文件時在C ++中使用extern C語法。

請看這里http://www.cplusplus.com/forum/general/1143/

暫無
暫無

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

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