2017-02-21 9 views
0

У меня есть 4 файлов (2 заголовки, 2 источника):нерешенным символ первой ссылки в

  • lcd.h,
  • lcd.c,
  • azt.h и
  • AZT. c

Включенный lcd внутри azt.

В lcd есть функция 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

Я удалил inline и скомпилировал его.