2013-10-28 17 views
6

いくつかのArduinoのCファイルをコンパイルしている間、私はエラー "`readArmsに未定義の参照を()入手'"ArduinoのC: `readArms(未定義参照) '

コードがpaste bin上で見つけることができます。

しかし、基本的に何が起こるかです:私が使用INOファイルで

"armfunctions.h" と "armfunctions.c" で宣言されている

の.hファイルは

void readArms(void); 

との.cファイルが含まれています

void readArms(void){ 
    float motor1 = 0.0; 
    int motor = 0; 
    motor = analogRead(READMOTOR1); 
    motor1 = (float)motor; 
    motor1 = (motor1 - 87.0) * (400.0/(1007.0-87.0)); 
    delay(1000); 
} 
+3

'' armfunctions.c "'をコンパイラに渡しましたか? – Sadique

+0

はい、これらのファイルはすべて同じフォルダに保存され、.INOファイルを開くとarduino SDKにすべて表示されます – DutchGabber

+1

armfunctions.cppにarmfunctions.cを変更すると問題が解決しました – DutchGabber

答えて

24

私は様々なスケッチを作成し、テストし、今日の時間のためにこれを研究してきた、と発見した(既に発見したとして).cppにそれらを変更する回避策ですが、特に交流ファイルを作成したい場合は、ヘッダーにプロトタイプをラップしてコンパイルする必要があります。そこにそれについていくつかの良い記事がありますが、問題の核心は、あなたの.hファイルに入れる:(

無効armfunctions :: readArms:

#ifdef __cplusplus 
extern "C" { 
#endif 

void readArms(void); 

#ifdef __cplusplus 
} 
#endif 
+2

は至福のように働いた! –

-2

あなたはあなたの.Cファイルに次のように使用する必要がありますvoid)...(::の前の部分は、あなたの.hファイルのクラス名です)

+1

'c'はC++コードではなく、Cソースコードのファイル拡張子です。名前空間とクラスはCには存在しません.CファイルにC++コードを書くことは有効な解決策ではありません。 – 2mac