2010-04-18 129 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文件。