簡體   English   中英

C鏈接器:多個定義

[英]C Linker: Multiple Definitions

我正在為我正在從事的網絡項目編寫鏈表實現。 它分為兩個文件:llist.h和llist.c。 我在幾個項目文件中包含llist.h,在編譯時,我鏈接到我編譯的包含llist.c的庫。 不幸的是,對於llist.h中的每個方法標頭,我都會收到“多個定義”錯誤。 即:

../util//libdutil.a(llist.o): In function `LListContains':
llist.c:(.text+0x0): multiple definition of `LListContains'
../util//libdutil.a(llist.o):llist.c:(.text+0x0): first defined here

我不太確定為什么會收到此錯誤。 過去很好,但是自從我添加了另一種方法以來,這種情況就開始發生了。 這是整個h文件:

#ifndef _LLIST_H_
#define _LLIST_H_

typedef struct _LinkedList
{
    int length;
    void* data;
    struct _LinkedList* head;
    struct _LinkedList* tail;
}* LinkedList;

LinkedList LListContains(LinkedList list, void* data, int (*cmp)(const void *, const void *));

void* getDataLList(LinkedList list);

LinkedList createLList(void* data);

void* getFromHeadLList(LinkedList list, int pos);

void* popHeadLList(LinkedList list);

void* popTailLList(LinkedList list);

LinkedList getNextLList(LinkedList current);

LinkedList getPrevLList(LinkedList current);

void addHeadLList(LinkedList list, void* data);

void addTailLList(LinkedList list, void* data);

void FreeLList(LinkedList list);

#endif

謝謝!

更新:好的,問題似乎來自項目文件之一中的以下代碼片段:

OPP_DIRECTION(getDirToXYPOS((XYPOS*)getFromHeadLList(memories[avID], 0), &curPos)))

請注意,getFromHeadLList是我添加到llist.h並在llist.c中定義的方法。 通過簡單地注釋掉該部分並添加一個虛擬參數,即:

OPP_DIRECTION(getDirToXYPOS(&curPos, &curPos)))

它編譯良好。

您很可能已經將llist.c編譯到項目以及靜態庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM