C++ 可变模板c+上未解决的外部符号错误+;由于使用了unsigned int

C++ 可变模板c+上未解决的外部符号错误+;由于使用了unsigned int,c++,c++11,templates,variadic-templates,C++,C++11,Templates,Variadic Templates,我已经声明了一个带有可变模板的简单函数 template<typename ...Args> void Log(const LogLevel level, const char * format, Args ...args); 其中变量类型为:id(unsigned int)、first(std::string)、second(std::string) 我得到以下错误: Error LNK2001 unresolved external symbol "public: void

我已经声明了一个带有可变模板的简单函数

template<typename ...Args>
void Log(const LogLevel level, const char * format, Args ...args);
其中变量类型为:
id
unsigned int
)、
first
std::string
)、
second
std::string

我得到以下错误:

Error   LNK2001 unresolved external symbol "public: void __cdecl Log<unsigned int,char const *,char const *>(enum LogLevel,char const *,unsigned int,char const *,char const *)" 
错误LNK2001未解析的外部符号“public:void\u cdecl Log(枚举日志级别,字符常量*,无符号整数,字符常量*,字符常量*)”
当我从函数调用中删除
unsigned int
参数时,错误消失。 AFAIK变量模板确实支持不同的类型。。。那么,我缺少了什么?

它是链接错误,所以(我想)您已经在标题文件中声明了模板函数,并在C++(非头文件)中定义了它。

如果使用在不同C++文件中接收<代码>未签名int 的模板函数,编译器不知道要执行的函数的版本。 简单解决方案:在标题中声明和定义模板函数/类/结构

如果我错了。。。请准备一个最小的例子来复制错误。

它是链接错误,所以(我想)您已经在标题文件中声明了模板函数,并在C++(非头文件)中定义了它。

如果使用在不同C++文件中接收<代码>未签名int 的模板函数,编译器不知道要执行的函数的版本。 简单解决方案:在标题中声明和定义模板函数/类/结构


如果我错了。。。请准备一个简单的示例来复制错误。

“我已经用可变模板声明了一个简单函数。”您在何处以及如何定义它?如果您的模板函数定义不在头文件中,请参阅。否则,发布一个。错过了这个!感谢相关帖子的链接。“我已经声明了一个带有可变模板的简单函数。”以及您在何处以及如何定义它?如果您的模板函数定义不在头文件中,请参阅。否则,发布一个。错过了这个!感谢您提供相关帖子的链接。
Error   LNK2001 unresolved external symbol "public: void __cdecl Log<unsigned int,char const *,char const *>(enum LogLevel,char const *,unsigned int,char const *,char const *)"