少数のCソースファイルをObjective-CiOSプロジェクトに統合すると、リンクエラーが発生します。
Cファイルは、cプロジェクトとPythonプロジェクトでコードを正常に使用した別の開発者から提供されました。
XCodeプロジェクトにcソースコードを追加すると、コードはコンパイルされますが、Cコードを参照するためにObjective Cファイルにコードを追加した後、リンクエラーが発生します。Cコードの変数で「重複シンボルエラー」が発生します。これは、ObjectiveCコードの拡張子が.mの場合です。
Objective Cファイルを.mm拡張子に変更すると、ObjectiveCコードから呼び出しているC関数に対して「アーキテクチャi386のシンボルが見つかりません」というエラーが発生します。
フォーラムにはCとObjectiveCについて多くの質問がありますが、私はまだ解決策を見つけていません。確認する簡単なことはありますか?
コードスニペット:
File: res.h
float Max_Std_Amp = 50;
void RD_Dispose(void);
File: res.c
void RD_Dispose(void) {
Max_Std_Amp = 0;
}
File: Import.mm
#import "res.h"
void process(UInt32* data, UInt32 dataLength)
{
RD_Dispose();
}
リンクエラー:
Import.mの拡張子が.mの場合:
duplicate symbol _Max_Std_Amp in:
/Users/dayhacker/Library/Developer/Xcode/DerivedData/My_Project-dbvpktweqzliaefgbqbebtdgyrey/Build/Intermediates/My Project.build/Debug-iphonesimulator/Respitory Rate.build/Objects-normal/i386/Import.o
Import.mmの拡張子が.mmの場合:
Undefined symbols for architecture i386:
"RD_Dispose()", referenced from:
process(unsigned long*, unsigned long) in Import.o