使老版本库文件支持Arduino 1.0 IDE的方法
Arduino 1.0 IDE 升级以后好多老的库文件在1.0下无法编译了。。让大家很痛苦。今天介绍下,怎么修改老的库文件,使其支持Arduino 1.0 IDE。以DS1302的库为例,首先我们打开库文件。可以看到里面有两个文件,一个是DS1302.cpp,一个是DS1302.h。
用notepad++等文本编辑器,打开DS1302.cpp,会看到里面有一个“#include "WProgram.h"”字段
同样打开DS1302.h,也会看到里面有一个“#include "WProgram.h"”字段。
我们把两个文件的“#include "WProgram.h""字段替换为#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif变为下图这样子
把修改好的库放入Arduino 1.0 IDE中,就可以正常编译了。
其实问题原因也比较简单,以前老版本中调用的WProgram.h,在1.0 IDE中改名为Arduino.h了~~~~只要替换掉相应字段,就可以使用了。 恍然大悟! 好帖呀,回头试试 无比感激!
好像IDE从0023开始就这样了? maximus 发表于 2012-5-27 15:33 static/image/common/back.gif
无比感激!
好像IDE从0023开始就这样了?
我是说,用0023就不能编译ps2手柄的库,难不成0022和0023的wprogram.h和.cpp还不同??
不过我把0023里hardware\arduino\cores的东西全复制到新IDE的同样位置下,原来不能编译的也能编译了,而且不用一个库一个库得改。。 有个疑问,那哪些库文件属于老的?哪些属于新的? arduino-tinker 发表于 2012-5-27 17:07 static/image/common/back.gif
有个疑问,那哪些库文件属于老的?哪些属于新的?
请您认真看一下弘毅站长的帖子!以前老版本中调用的WProgram.h,在1.0 IDE中改名为Arduino.h了 {:soso_e136:}原来这样,我才知道。。。。 收藏學習了,貌似我同學也遇到了這個問題,明天給他講 原来如此,怪不得boxz程序在1.0版本中编译出错:o:@:P {:soso_e179:} {:soso_e179:} 这两天试了一个LCM1602 IIC的库,貌似只是改WProgram.h 为 Arduino.h 还不能完全解决问题。只好找了一个号称支持1.0IDE的库,才搞定了。 好贴,顶一个{:soso_e179:} Arduino:1.5.5 (Windows 7), 板:"Arduino Uno"
Using library Wire in folder: D:\Program Files\Arduino\hardware\arduino\avr\libraries\Wire (pre-1.5)
Using library LiquidCrystal_I2C in folder: D:\Program Files\Arduino\libraries\LiquidCrystal_I2C (pre-1.5)
D:\Program Files\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=155 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -ID:\Program Files\Arduino\hardware\arduino\avr\cores\arduino -ID:\Program Files\Arduino\hardware\arduino\avr\variants\standard -ID:\Program Files\Arduino\hardware\arduino\avr\libraries\Wire -ID:\Program Files\Arduino\libraries\LiquidCrystal_I2C C:\Users\WANGXU~1\AppData\Local\Temp\build3721494744682372248.tmp\HelloWorld.cpp -o C:\Users\WANGXU~1\AppData\Local\Temp\build3721494744682372248.tmp\HelloWorld.cpp.o
In file included from HelloWorld.pde:2:
D:\Program Files\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:80: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
D:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
页:
[1]
2