+ -
当前位置:首页 → 问答吧 → 一个反复出现的error LNK2019问题,求助……

一个反复出现的error LNK2019问题,求助……

时间:2011-12-12

来源:互联网

代码是这样的:(首先这是一个Win32控制台应用程序)

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double a, b;
double tgamma(double b);
cin >> a;
b=a+1;
cout << tgamma(b) << endl;
system("pause");
return 0;
}

在编译的时候出现:
Source.obj : error LNK2019: 无法解析的外部符号 "double __cdecl tgamma(double)" (?tgamma@@YANN@Z),该符号在函数 _main 中被引用

不知如何解决,tgamma到底是怎么用的啊?

作者: testcaoy7   发布时间: 2011-12-12

你的double tgamma(double b);定义在那里?
这个函数要自己写的,你没有实现,当然出错

作者: keiy   发布时间: 2011-12-12

你的函数tgamma()有问题,是来自头文件cmath吗

作者: nuaazdh   发布时间: 2011-12-12

我又看下,只有gcc支持std::tgamma函数,且你的写法有问题
因为std::tgamma是STL的函数,所以你不能再声明
以下程序在gcc 4.5中编译通过
C/C++ code

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
double a, b;
cin >> a;
b=a+1;
cout << tgamma(b) << endl;

return 0;
}



如果你是VC,可能只有vs2011支持了
http://msdn.microsoft.com/en-us/library/hh308423(v=vs.110).aspx

作者: keiy   发布时间: 2011-12-12

怪不得,谢谢楼上几位,原来我把GCC里的函数拿来给VC用,所以不行。

说实在的,我还以为c++ standard library不受编程器的影响呢,原来不同的编程器支持的语句也有差异……

作者: testcaoy7   发布时间: 2011-12-13

引用 4 楼 testcaoy7 的回复:怪不得,谢谢楼上几位,原来我把GCC里的函数拿来给VC用,所以不行。

说实在的,我还以为c++ standard library不受编程器的影响呢,原来不同的编程器支持的语句也有差异……


楼上都说了,这是c++11的stl才有的东西,vc带的stl还不支持,等支持了以后语法是一样的

作者: yisikaipu   发布时间: 2011-12-13