2010-04-18 163 views
1

我收到一個鏈接錯誤,我不確定它指的是什麼。無法解析的外部符號

以下是錯誤

1> Main.obj:錯誤LNK2019:解析外部符號「公共:無效__thiscall二叉堆,類的std ::分配器>>,類小樣,類的std ::分配器> >插入@?$ BinaryHeap @ V?$ Item @ V $ $ basic_string @ DU?$ char_traits @ D @ std @@ V?insert(class Item,class std :: allocator>> const &) $分配器@ d @ @@ 2 STD @@@@ V'$ @小樣V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@@@@@ QAEXABV?$ Item @ V $ $ basic_string @ DU $ $ char_traits @ D @ std @@ V $ $ allocator @ D @ 2 @@ std @@@@@ Z)在函數「public:void __thiscall中引用PriorityQueue,class std :: allocator >> insertItem(int,class std :: basic_string,class std :: allocator> const &)「 (?insertItem @?$ @ PriorityQueue中V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@@@ QAEXHABV?$ basic_string的@ DU?$ char_traits @ d @ std @@ V $ $ allocator @ D @ 2 @@ std @@@ Z)

該代碼是相當長,但是如果你想我發佈它,我會的。

感謝

回答

3

它說你打電話BinaryHeap::insert但沒有該功能的實現是在被鏈接你必須有頭文件周圍或編譯器已經失敗了,當你試圖調用未聲明的函數。你忘記鏈接BinaryHeap庫嗎?

2

你試圖定義一個模板化的BinaryHeap類嗎?你是否在.h文件中聲明插入方法並在.cc文件中定義它?

這對大多數編譯器不起作用。您需要定義模板函數,以便它們在編譯時可用,而不僅僅是鏈接時間。將函數定義移動到頭文件。

5

它是一個模板函數,BinaryHeap<T, Comp>::insert(T const &)。你的MSVC編譯器不支持可導出的模板(很少做)。確保你在頭文件中定義(不只是聲明)這個函數,而不是.cpp文件。