当我使用模板为类编写C++代码并在源(CPP)文件和标题(H)文件之间拆分代码时,在链接最终可执行文件时会出现大量"未解析的外部符号"错误,尽管目标文件正确构建并包含在链接中.这里发生了什么,我该如何解决?
我在用C++编写的共享库中有一个模板函数(该函数不在库中的任何地方调用,所以不应该生成它,我错了吗?)[g ++,Linux]
我尝试在应用程序中使用此模板函数,但编译器给出链接错误.我使用objdump搜索函数但我无法在.so中看到函数有没有办法解决这个问题?
可能重复:
C++模板,链接错误
我正在尝试实现选择排序,但我不断收到错误(打印在下面).在我看来,我的所有包含和模板都正确完成.有人可以向我解释这个错误的原因以及调试此类错误的一般方法.通常情况下会出现包含或模板问题,但偶尔会出现在我不知道错误的情况下.谢谢.
错误LNK2019:函数_main中引用的未解析的外部符号"public:void __thiscall Selection :: SelectionSort(int*const,int)"(?SelectionSort @?$ Selection @ H @@ QAEXQAHH @ Z)
TEST.CPP
#include <iostream>
#include "SelectionSort.h"
using namespace std;
void main()
{
int ar[] = {1,2,3,4,5};
Selection<int> s;
s.SelectionSort(ar,5);
for(int i = 0; i < 5; i++)
{
cout << "\nstudent number " << i + 1<< " grade " << ar[i];
}
}
Run Code Online (Sandbox Code Playgroud)
SelcectionSort.h
template<class ItemType>
class Selection
{
public:
void SelectionSort(ItemType[], int);
private:
int MinIndex(ItemType[], int, int);
void Swap(ItemType& , ItemType&);
};
Run Code Online (Sandbox Code Playgroud)
SelectionSort.cpp …