我正在学习如何使用 Visual Studio 2010 创建库。所以为了测试多个符号,我刚刚写了 -
添加.cpp
template <typename T>
T fooBar(T a1, T a2)
{
return (a1+a2);
}
减法.cpp
template <typename T>
T fooBar(T a1, T a2)
{
return (a1-a2);
}
据我了解,模板是一个编译时概念。只是为了测试该工具在函数/函数模板之间的行为,我写了上面的内容。.lib
即使在功能模板的最高级别设置,它也成功创建而没有任何警告。但是,在正常功能的情况下,它会发出警告。
add.obj : 警告 LNK4006: "int __cdecl fooBar(int,int)" (?fooBar@@YAHHH@Z) 已经在subtract.obj中定义;第二个定义被忽略
add.obj:警告 LNK4221:未找到公共符号;存档成员将无法访问
为什么该工具对函数和函数模板的行为不同?