想为快速排序建一个动态链接库好在以后写算法的时候直接调用。为了便于复用,使用了函数模板,头文件如下:
#ifdef SORTDLL_EXPORTS
#define SORT_API __declspec(dllexport)
#else
#define SORT_API __declspec(dllimport)
#endif
// other functions
template<typename T>
SORT_API
void quicksort(T *a, int size);
自然地,在CPP文件里这么定义:
template<T>
void quicksort(T*a, int size)
{
// implements
}
生成成功,但是在另一个项目里调用quicksort函数时却显示链接错误
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void __cdecl quicksort<class Point>(class Point *,int)" (__imp_??$quicksort@VPoint@@@@YAXPAVPoint@@H@Z),该符号在函数 _main 中被引用
fatal error LNK1120: 1 个无法解析的外部命令
就这么个玩意儿鼓捣了半天,读了一篇别人的博客才知道quicksort函数压根没被导出(好烦哪),而简单的解决方案就是在动态链接库的CPP文件中给想要的类