C++中关于无法无法解析外部错误的解决方案
2017-07-27 14:50
351 查看
首先 为什么写这个博客,前几日遇到了一个问题,就是在用类模板写堆的时候,出现了这个问题,当时花了好久,解决了那个问题,今天在看C++Primer Plus的时候在函数指针的时候,出现了相同的问题。
下面上代码#include<iostream>
using namespace std;
const double *f1(const double ar[], int n);
const double *f2(const double [],int);
const double *f3(const double *,int);
void main()
{
const double *(*p1)(const double ar[], int n) = f1;
auto p2 = f2;
const double *(*p[3])(const double ar[],int n) = {f1,f2,f3};
auto pb = p;
cout<<p1<<endl<<p2<<endl<<pb[1]<<" "<<pb[2]<<" "<<pb[3]<<endl;
}
/*const double *f1(const double ar[], int n)
{
return ar;
}
const double *f2(const double ar[], int n)
{
return ar+1;
}
const double *f3(const double ar[], int n)
{
return ar+2;
}
*/这个会出现
1>C++.obj : error LNK2019: 无法解析的外部符号 "double const * __cdecl f3(double const *,int)" (?f3@@YAPBNPBNH@Z),该符号在函数 _main 中被引用
1>C++.obj : error LNK2019: 无法解析的外部符号 "double const * __cdecl f2(double const * const,int)" (?f2@@YAPBNQBNH@Z),该符号在函数 _main 中被引用
1>C++.obj : error LNK2019: 无法解析的外部符号 "double const * __cdecl f1(double const * const,int)" (?f1@@YAPBNQBNH@Z),该符号在函数 _main 中被引用
1>C:\Users\zxx\documents\visual studio 2010\Projects\Test1\Debug\Test1.exe : fatal error LNK1120: 3 个无法解析的外部命令
这是为什么呢? 可以这样想 你只是申明 了有三个函数,然后用一个函数的数组指针指向了这三个函数,但是问题出来了,这个逻辑上并没有错误,为啥报错呢?
我也没有想明白,于是加上了实现 就没有错误了,看来还是因为指向的函数没有实现,结果导致空指向??
另外 在做类模板的时候 出现问题的原因也是因为没有实现,只是一个抽象的模板,而你传递的时候,必须要是个实例化如<int>的类或者方法,所以建议把模板和实现放在一起
这样就不会报错了。但是这样做的话,和STL中的类模板的实现就有差距,这个以后有时间研究在写一个博客。
下面上代码#include<iostream>
using namespace std;
const double *f1(const double ar[], int n);
const double *f2(const double [],int);
const double *f3(const double *,int);
void main()
{
const double *(*p1)(const double ar[], int n) = f1;
auto p2 = f2;
const double *(*p[3])(const double ar[],int n) = {f1,f2,f3};
auto pb = p;
cout<<p1<<endl<<p2<<endl<<pb[1]<<" "<<pb[2]<<" "<<pb[3]<<endl;
}
/*const double *f1(const double ar[], int n)
{
return ar;
}
const double *f2(const double ar[], int n)
{
return ar+1;
}
const double *f3(const double ar[], int n)
{
return ar+2;
}
*/这个会出现
1>C++.obj : error LNK2019: 无法解析的外部符号 "double const * __cdecl f3(double const *,int)" (?f3@@YAPBNPBNH@Z),该符号在函数 _main 中被引用
1>C++.obj : error LNK2019: 无法解析的外部符号 "double const * __cdecl f2(double const * const,int)" (?f2@@YAPBNQBNH@Z),该符号在函数 _main 中被引用
1>C++.obj : error LNK2019: 无法解析的外部符号 "double const * __cdecl f1(double const * const,int)" (?f1@@YAPBNQBNH@Z),该符号在函数 _main 中被引用
1>C:\Users\zxx\documents\visual studio 2010\Projects\Test1\Debug\Test1.exe : fatal error LNK1120: 3 个无法解析的外部命令
这是为什么呢? 可以这样想 你只是申明 了有三个函数,然后用一个函数的数组指针指向了这三个函数,但是问题出来了,这个逻辑上并没有错误,为啥报错呢?
我也没有想明白,于是加上了实现 就没有错误了,看来还是因为指向的函数没有实现,结果导致空指向??
另外 在做类模板的时候 出现问题的原因也是因为没有实现,只是一个抽象的模板,而你传递的时候,必须要是个实例化如<int>的类或者方法,所以建议把模板和实现放在一起
这样就不会报错了。但是这样做的话,和STL中的类模板的实现就有差距,这个以后有时间研究在写一个博客。
相关文章推荐
- [VS2013]C++中调用Python脚本提示 error LNK2001: 无法解析的外部符号__imp_PyString_FromString等错误的解决方案
- C++中无法解析的外部符号错误
- 【C++】关于error LNK 2019 无法解析的外部符号
- 关于VS报无法解析外部符号的错误
- 关于各种无法解析的外部符号问题的相应解决方案
- C++的error LNK2019: 无法解析的外部符号编译错误
- 学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案
- 关于调用skin++会出现无法解析的外部符号问题解决方案
- 有关C++模板(template)的编译错误“error LNK2019: 无法解析的外部符号”的分析
- 关于我遇到的“LNK 2019无法解析的外部符号”的链接错误
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
- C++中运用模版报“无法解析的外部符号”错误解决方法
- 关于链接过程中出现的“找到一个或多个多重定义的符号”和“无法解析的外部符号”错误的探究
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用
- 有关C++模板(template)的编译错误“error LNK2019: 无法解析的外部符号”的分析
- 有关C++模板(template)的编译错误“error LNK2019: 无法解析的外部符号”的分析
- C++ ODBC 函数报无法解析的外部函数错误的解决方法
- c++计时遇到错误:error LNK2001:无法解析的外部符号_imp_timeGetTime
- 关于各种无法解析的外部符号问题的相应解决方案
- “LNK2001: 无法解析的外部符号错误”的一种解决方案