簡體   English   中英

ObjC ++調用用C編寫的靜態庫

[英]ObjC++ calling static library written in C

我有一個使用ffmpeg(是純C庫)和OpenCV的iOS項目。

由於我使用OpenCV的C ++接口,因此我編寫了.mm文件的Objective-c ++。 但是使用ffmpeg不能正常運行該文件,並且Xcode在鏈接階段抱怨undefined symbol

我還在另一個.m文件中使用ffmpeg,這沒關系。 所以我敢肯定問題出在.mm和用C編寫的靜態庫。

使用.mm時,您會得到c ++名稱修飾(與c名稱修飾相反)。

通過在您的c函數聲明中添加“外部c”包裝器來解決(該定義不需要)

extern "C" {

int somecallback(int param);

}

編輯:通常c頭文件已經安排了這種包裝,尋找類似於

#if defined  __cplusplus
extern "C" {
#endif

在.h文件中,如果找不到,則將#include放入ypur自己的包裝器中。

暫無
暫無

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

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