Я использую icc12, чтобы сделать проект, который содержит три файла:неопределенных символов в файле .o
.с файл, содержащий ряд подпрограмм на языке ассемблера
.h файл со списком функций
.c программу, содержащую мой основной код, где я призываю моих подпрограммами
Моя проблема заключается в том, что, когда я скомпилировать свою программу C компилятор отображает следующие ошибки:
!ERROR file 'filename.o': undefined symbol '_lcd_putstr'
!ERROR file 'filename.o': undefined symbol '_lcd_init'
!ERROR file 'filename.o': undefined symbol '_lcd_move'
!ERROR file 'filename.o': undefined symbol '_lcd_clear'
Я изучал, что такое файл .o, и я понимаю, что это объектный файл, содержащий машинный код, который понимает ЦП. Они содержат информацию, которая позволяет компоновщику видеть, какие символы он требует для работы. Я все еще не понимаю, как я могу исправить эти ошибки, хотя из этого. Я проверил любые грамматические ошибки, но я не могу найти их. Кто-нибудь может предложить некоторую помощь в том, как я могу определить эти символы в моем файле .o?
Мои команды сборки являются
#include <stdio.h>
#include <mc9s12dp512.h>
#include "lcd.h"
int main (void)
{
unsigned char keycode;
int keysave = 0;
DDRB = 0x00; /* make Port B an input port */
lcd_init(); // initialise the lcd module
lcd_clear(); // clear the lcd module
// print the welcome message on the LCD module
lcd_putstr(" message A ");
// move the cursor position down a line
lcd_move(1,1);
lcd_putstr(" message B ");
// move the cursor position down a line
lcd_move(1,2);
lcd_putstr(" message C ");
// move the cursor position down a line
lcd_move(1,3);
lcd_putstr(" message D ");
Отрывок из сборочного файла для _lcd_putstr
_lcd_putstr::
pshx
tfr d,x ; Transfer address of string to X
ldaa #WRDATA ; Set up command for write data
jsr WriteBytes ; Call subroutine to write byte to LCD
pulx
rts
Пожалуйста, разместите свои команды сборки, а также укажите, где определены функции '_lcd_xxx' (т. Е. В каком исходном файле). –
@PaulR мой исходный файл содержит все функции '_lcd_xxx' в языке ассемблера и определения функций.Все они объявлены в исходном файле с символом подчеркивания и сопровождаются двумя двоеточиями, например, '_lcd_putstr ::' . Мои команды сборки следующие: –
. Нажмите ссылку [edit] выше, чтобы добавить дополнительную информацию к вашему вопросу (например, как команды сборки, соответствующий исходный код и т. д.), а не использование комментариев. –