我在c中为Arduino创建了一个库,而我在将Adafruit CC3000库导入其中时遇到了问题。我知道我会立即得到使用c ++的评论,但对于我想要做的事情,对我来说更好。 我认为我的问题是我引用所有内容的方式,所以如果有人能够清楚地了解我应该如何从自定义库中导入和调用外部库,这将会很棒。
我的文件是这样的:
agent.h
agent_init.c
cc3000.h
cc3000.c
test_agent.ino
这个想法是cc3000是一个可选的连接硬件,可以根据需要设置它,将来我可以有不同的硬件文件,可以根据需要编译成Arduino代码。
在agent.h和agent_init.c中,我暂时没有对cc3000文件的任何引用。我这样做是为了将它分开,但可能会改变这一点,因为我想通过代理代码使用cc3000功能。 (例如,设置变量AGENT_USE_CC3000)。
在cc3000.h中我暂时将其作为基本文件:
#ifndef __AF_CC3000_H
#define __AF_CC3000_H
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
Adafruit_CC3000 cc3000;
#ifdef __cplusplus
}
#endif
#endif /* __AF_CC3000_H */
在cc3000.c中我有:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <math.h>
#include "agent.h"
#include "cc3000.h"
#ifdef AGENT_USE_CC3000
#include <Adafruit_CC3000.h>
#include <ccspi.h>
#include <Adafruit_CC3000_Server.h>
...
#endif
我遇到的问题是cc3000.h,我已将Adafruit_CC3000 cc3000
置于其中。
error: no matching function for call to 'Adafruit_CC3000::Adafruit_CC3000()
在我的ini文件中,我包含"agent.h"
和"cc3000.h"
,然后为代理程序代码执行初始化内容,这些代码自行编译好。我有90%的自信我不理解如何调用事物以及它们应该在何处被声明以及如何在库中正确使用外部库函数。这是我第一次这样做,我觉得@ _ @目前......
我想知道我是否只是以错误的方式解决这个问题。我还需要cc3000.h文件吗?如果我调用代理中的相关函数调用它需要的代码,即在这种情况下来自cc3000.c那么头文件是否必要?我创建它时看一些库(比如CC3000 lib),所有.cpp文件都有头文件。
如果有人能给我一些指导,我可以提出更正,我将不胜感激。