极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 66693|回复: 21

使老版本库文件支持Arduino 1.0 IDE的方法

[复制链接]
发表于 2012-5-25 18:39:59 | 显示全部楼层 |阅读模式
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""字段替换为
  1. #if ARDUINO >= 100
  2. #include "Arduino.h"
  3. #else
  4. #include "WProgram.h"
  5. #endif
复制代码
变为下图这样子





把修改好的库放入Arduino 1.0 IDE中,就可以正常编译了。

其实问题原因也比较简单,以前老版本中调用的WProgram.h,在1.0 IDE中改名为Arduino.h了~~~~只要替换掉相应字段,就可以使用了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-5-25 19:39:17 | 显示全部楼层
恍然大悟!
回复 支持 反对

使用道具 举报

发表于 2012-5-26 23:18:51 | 显示全部楼层
好帖呀,回头试试
回复 支持 反对

使用道具 举报

发表于 2012-5-27 15:33:59 | 显示全部楼层
无比感激!
好像IDE从0023开始就这样了?
回复 支持 反对

使用道具 举报

发表于 2012-5-27 15:56:44 | 显示全部楼层
maximus 发表于 2012-5-27 15:33
无比感激!
好像IDE从0023开始就这样了?

我是说,用0023就不能编译ps2手柄的库,难不成0022和0023的wprogram.h和.cpp还不同??
不过我把0023里hardware\arduino\cores的东西全复制到新IDE的同样位置下,原来不能编译的也能编译了,而且不用一个库一个库得改。。
回复 支持 反对

使用道具 举报

发表于 2012-5-27 17:07:55 | 显示全部楼层
有个疑问,那哪些库文件属于老的?哪些属于新的?
回复 支持 反对

使用道具 举报

发表于 2012-5-27 18:22:40 | 显示全部楼层
arduino-tinker 发表于 2012-5-27 17:07
有个疑问,那哪些库文件属于老的?哪些属于新的?

请您认真看一下弘毅站长的帖子!以前老版本中调用的WProgram.h,在1.0 IDE中改名为Arduino.h了
回复 支持 反对

使用道具 举报

发表于 2012-7-1 21:43:36 | 显示全部楼层
{:soso_e136:}原来这样,我才知道。。。。
回复 支持 反对

使用道具 举报

发表于 2012-7-2 01:42:24 | 显示全部楼层
收藏學習了,貌似我同學也遇到了這個問題,明天給他講
回复 支持 反对

使用道具 举报

发表于 2012-10-13 18:04:26 | 显示全部楼层
原来如此,怪不得boxz程序在1.0版本中编译出错
回复 支持 反对

使用道具 举报

发表于 2012-11-11 17:52:43 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2012-11-11 17:52:59 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2012-11-30 22:04:50 | 显示全部楼层
这两天试了一个LCM1602 IIC的库,貌似只是改WProgram.h 为 Arduino.h 还不能完全解决问题。只好找了一个号称支持1.0IDE的库,才搞定了。
回复 支持 反对

使用道具 举报

发表于 2013-7-8 17:34:19 | 显示全部楼层
好贴,顶一个{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2014-1-14 14:34:36 | 显示全部楼层
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)'
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-16 13:35 , Processed in 0.051421 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表