2013-10-28 23 views
6

bir hata alıyorum bazı Arduino C dosyasını "readArms `tanımsız başvuru() derleme yaparken'"Arduino C: readArms `referans tanımsız() '

kod paste bin bulunabilir.

Ama temelde hâle mi: INO dosyasında

Kullandığım: "armfunctions.h" ve "armfunctions.c"

.h deklare edilmediği

dosya

void readArms(void); 

Ve .c dosyasını içerir:

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" 'derleyiciye mi geçtiniz? – Sadique

+0

Evet, bu dosyaların tümü aynı klasörde ve hepsi de .INO dosyasını açtığımda arduino SDK'sında görünür. – DutchGabber

+1

Armfunctions.c için armfunctions.cpp değiştirilmesi sorunu çözdü – DutchGabber

cevap

24

I (önceden bulduğunuz gibi) .cpp olarak değiştirerek bir çözüm olmakla birlikte, yapım ve çeşitli skeçler test bugün saatlerce bu araştırma edilmiş ve bulduk Özellikle AC dosyası oluşturmak istiyorsanız, Derlemeleri elde etmek için prototipleri başlıkta sarmanız gerekir. Orada bu konuda birkaç iyi mesajlar, ancak İşin kilit noktası, sizin .h dosyasında koyun: (

geçersiz armfunctions :: readArms:

#ifdef __cplusplus 
extern "C" { 
#endif 

void readArms(void); 

#ifdef __cplusplus 
} 
#endif 
+2

, mutluluk gibi çalıştı! –

-2

Sen .C dosyasında aşağıdaki kullanmalıdır void) ... (bölümün önündeki bölüm .h dosyanızdaki classname'tir)

+1

'c' C kaynak kodu dosya uzantısıdır, C++ değil. Ad alanları ve sınıflar C dilinde mevcut değildir. C++ kodunun C dosyasında yazılması geçerli bir çözüm değildir. – 2mac