Visual Studio 2010を使用してライブラリを作成する方法を学習しています。したがって、複数のシンボルをテストするために、次のように記述しました。
add.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ですでに定義されています。2番目の定義は無視されます
add.obj:警告LNK4221:パブリックシンボルが見つかりません。アーカイブメンバーにアクセスできなくなります
関数と関数テンプレートでツールの動作が異なるのはなぜですか?