我一直收到此错误:当我尝试编译我的c ++控制台应用程序时,'函数_ _tmainCRTStartup'中未解析的外部符号主要引用。我做了一些搜索,我发现只是将我的'链接器'从窗口改为控制台,反之亦然。这没用,我甚至尝试创建一个新的控制台应用程序。
我不确定是什么导致这种情况,template <typename T>
是否可能导致两个文件中出现混淆?这里的任何帮助将不胜感激。
以下代码:
Main.cpp的:
#include <iostream>
#include "tools.h"
using namespace tools;
template <typename T>
int main()
{
T input1;
T input2;
std::cout << "Enter in 1st number: " << endl;
std::cin >> input1;
std::cout << "Enter in 2nd number: " << endl;
std::cin >> input2;
std::cout << "num1 - num2 = [" << numberDifference(input1, input2) << "]" << endl;
getchar();
getchar();
return 0;
}
的Tools.h:
#include <iostream>
namespace tools
{
template <typename T>
T numberDifference(T num1, T num2)
{
if(num1 > num2)
return num1 - num2;
else
return num2 - num1;
}
};
答案 0 :(得分:5)
删除template
功能的main
定义。
或者至少从正确的main
函数中调用它。
e.g。
template< typename T >
int templated_main( int c, char** argv )
{
// What was in your original main function....
}
int main( int c, char** argv )
{
return templated_main<int>( c, argv );
}
答案 1 :(得分:2)
在main之前删除template <typename T>
。这将使main
成为模板函数。
并将T input1; T input2;
更改为某种特定类型,例如int
或float
。