2014-02-14 2 views
-1

В моем заголовке interface.h У меня есть функция,неопределенная ссылка на `printb»

extern void printb(char *, unsigned short, char *);

, который называется в main.c следующим образом,

printb(" available", EXTRACT_16BITS(ptr), LLDP_CAP_BITS);

И включили heder файл в моем main.c следующим образом.

#include "interface.h"

Однако, когда я пытаюсь скомпилировать, я получаю ошибку о том, следующем,

undefined reference to 'printb' collect2: ld returned 1 exit status

Я пытался сделать некоторые исследования по этому вопросу и пришел с пустыми руками. любая помощь, чтобы решить эту проблему, очень ценится :)

Спасибо :)

+3

где printb реализован? – igoris

+3

Ну, а вы связали ли вы библиотеку или скомпилировали с объектом, где определен printb? – Salgar

+0

, вы не указали правильную ссылку. Вероятно, вам нужно ввести эту командную строку 'gcc -o myprog main.c interface.c'. –

ответ

0
  1. Во-первых, вы должны выяснить, где определение функции printb() есть. Если он находится в какой-либо другой статической библиотеке, тогда вам нужно связать эту lib при компиляции. Например, если ваша функция printb находится в библиотеке printb, затем скомпилируйте свой источник, как показано ниже.

    НКУ -o прог main.c -l printb

  2. Если функция printb находится в другой отдельный файл printb.c, а затем скомпилировать код в

    НКУ -o прог main.c printb. c

    Любой из них должен работать на вас.