2014-02-14 121 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

你沒有正確鏈接。可能你需要輸入這個commande行'gcc -o myprog main.c interface.c'。 –

回答

0
  1. 首先,你需要找出函數printb()的定義。如果它在其他靜態庫中,則需要在編譯時鏈接到該庫。例如,如果你的printb函數在printb庫中,那麼編譯你的源代碼如下。

    的gcc -o前衛的main.c -l printb

  2. 如果您printb功能是在另一個獨立的printb.c文件,然後編譯代碼爲

    的gcc -o PROG main.c中printb。 c

    其中之一應該適合您。