2011-11-27 82 views
0

我正在使用Atrollic Studio(Eclipse中也存在問題)。未定義的引用extern int stm32

.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'.This項目是需要通過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」不帶大括號。

+0

平臺?鏈接器命令行?鏈接器設置? – moshbear

+1

你提供了i2cIO(...)somwhere的定義嗎?或者你可能忘記鏈接到包含的庫? – xmoex

+0

請參閱upd。 – SevenDays

回答

0

好的,你的環境被稱爲Atollic(拼寫錯誤),但是從頭文件的名字我得出結論,你正在使用Mike Cowlishaw的Tollos主管。 其次,編譯選項可能不正確,因爲GCC的-E選項僅導致生成預處理輸出,但是您報告的錯誤是鏈接器錯誤。

如果沒有更多信息,我會假設您缺少一個包含i2cIO實現的庫,可能是鏈接器命令行的缺失選項。

由於您似乎正在使用Tollos不直接支持的處理器變體,因此我想您要將Tollos移植到您的處理器上。檢查你的makefile cq。 Atollic項目設置包含正確的庫。如果適用,請用-c替換-E選件。