2017-02-21 76 views
0

第一參考I有4個文件(2頭,2源):未解析的符號,在

  • lcd.h用於,
  • lcd.c,
  • azt.h和
  • AZT。 c

我在液晶顯示器內包括了azt。

在液晶顯示器有一個功能WriteMsg這是所謂的內部azt, 它工作正常。

但是,當我加入呼籲在lcd.c這個功能,我得到以下錯誤

Description Resource Path Location Type 
unresolved symbol WriteMsg, first referenced in ./Includes/AutoZeroTracking.obj Joe1000   C/C++ Problem 

我明白,我引用它首先在AZT文件,但這個函數是在其他地方引用,我沒有這個問題。

這裏的lcd.h用於:

#ifndef MSP 
#define MSP 
#include <msp430g2553.h> 
#endif 
#include "Utilities.h" 
#include "Declarations.h" 

#ifndef INCLUDES_LCD_H_ 
#define INCLUDES_LCD_H_ 
#define LCD_CALL 1 

void InitLCD(unsigned char SDA,unsigned char SCL,unsigned char slaveAddress); 
void StartLCD(); 
inline int ReadyToSend(); 
void SendToLcd(unsigned char* data, int size); 
void WriteToLCD(int clearScreen); 
void switchFrom8To4Bits(); 
void write2x4Bits(unsigned char bits, int is_data); 
void writeCommand(unsigned char command); 
inline void writeData(unsigned char data); 
void ClearScreen(); 
void WriteWeight(); 
void WriteWeightMode(); 
inline void WriteMsg(const char* msg, int msgLen,char msgLocation,int maxDigits); 
inline void WriteNum(long num,char location,int maxDigits); 
void WriteTare(char num); 


#endif /* INCLUDES_LCD_H_ */ 

這裏的azt.h:

#ifndef INCLUDES_AUTOZEROTRACKING_H_ 
#define INCLUDES_AUTOZEROTRACKING_H_ 
#include "Declarations.h" 
#include "LCD.h" 
#include "Utilities.h" 

void AZTSetup(); 
void AZTProcess(); 

void DisplayAZT(); 

void GetPreviousAZT(); 
void GetNextAZT(); 

void KeyPressedAZTMode(char keyPressed); 

inline char HasAZTStopped(); 

#endif /* INCLUDES_AUTOZEROTRACKING_H_ */ 

在azt.c

void DisplayAZT() 
{ 
    WriteMsg(AZT[m_curr_azt],AZTLen[m_curr_azt],0x8A,5); 
} 

在lcd.c

調用的代碼
void WriteWeight() 
{ 
    WriteNum(CountBy[cnt_by_idx],0x80,2); 
    WriteNum(NOD[n_o_d_idx],0x83,5); 
    WriteNum(max_weight,0x89,6); 
    WriteNum(idx_decimal_point,0x90,1); 
    WriteMsg(AZT[az_tracking_idx],AZTLen[az_tracking_idx],0x9A,3); 
    WriteNum(BaudRate[baud_rate_idx],0xC0,6); 
    WriteNum(PP2Z[percent_p2z_idx],0x9E,2); 
    WriteNum(wt_zero,0x94,10); 
    WriteNum(wt_slope,0xD4,10); 

    /*int i = 0; 
    for(i = 0; i < WEIGHT_ARR_LEN ; i++) 
    { 
     if(display_weight[i] != IGNORE_CHAR) 
      writeData(display_weight[i]); 
    }*/ 
} 

在此先感謝。

+1

你的lcd.c文件有'#include「lcd.h」'在頂部附近? – Toby

+2

標題聲明'WriteMsg'和'WriteNum'是'inline'。所以......他們呢? – WhozCraig

+0

謝謝你的回覆,lcd.c確實包含了lcd.h,WriteMsg和WriteNum的定義和聲明都是內聯的 – Joe

回答

0

我刪除了內聯,它編譯。