我正在使用Atrollic Studio(Eclipse中也存在问题)。

.h文件

 extern int i2cInitIO(uint channel, uint hz);
 extern int i2cIO(uint device, byte *put, uint putlen, byte *get, uint getlen);


.c文件

#include "tollosI2C.h"
int i2cGetReg(uint device, byte reg, byte *get) {
  // write one byte address then read 1 byte data

  return i2cIO(device, &reg, 1, get, 1);
  } // i2cGetReg


我有一个问题:未定义对i2cIO的引用。此项目需要由ARM工具链编译。
StM32F103VET6-高密度设备。我使用的是ST-Link。

UPD:我的.h文件-http://pastebin.com/52ftBxR9

和c。文件-http://pastebin.com/CcjpVZUP

编译器调用命令-“ gcc”不带大括号。

编译器调用参数-“ -E -P -v -dD $ {plugin_state_location} /specs.c”,不带括号。

最佳答案

好的,您的环境称为Atollic(拼写错误),但是根据头文件的名称,我得出结论,您正在使用Mike Cowlishaw的Tollos主管。
其次,您的编译选项可能不正确,因为GCC的-E选项仅导致生成预处理输出,因此,您报告的错误是链接器错误。

如果没有更多信息,我将假定您缺少包含i2cIO实现的库,这可能是链接器命令行缺少的选项。

由于您似乎正在使用Tollos不直接支持的处理器变体,因此我想您想为您的处理器移植Tollos。检查您的makefile CQ。 Atollic项目设置包括正确的库。并且,如果合适,将-E选项替换为-c

关于c - 未定义对extern int stm32的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8284478/

10-11 19:10