我正在Ubuntu15.10上尝试从SymbolicC++3-3.35-ac.tar安装SymbolicC++。我做了一个./配置、make、sudo make安装,没有错误。
我尝试用g++ test1.cpp -lsymbolicc++编译以下内容
#include <iostream>
#include "symbolicc++.h"
using namespace std;
int main(void)
{
Symbolic x("x");
cout << integrate(x+1, x) <<endl; // => 1/2*x^(2)+x
Symbolic y("y");
cout << df(y, x) << endl; // => 0
cout << df(y[x], x) << endl; // => df(y[x],x)
cout << df(exp(cos(y[x])), x) << endl ;
// => -sin(y[x])*df(y[x],x)*e^cos(y[x])
return 0;
}这段代码来自维基百科在SymbolicC++上的文章
我得到以下错误:
doug@doug-Z170X-UD5:~/books_computerAlgebraSys$ g++ test1.cpp -lsymbolicc++
/usr/local/lib/libsymbolicc++.so: undefined reference to `Number<double>::Number(double const&)'
/usr/local/lib/libsymbolicc++.so: undefined reference to `Number<int>::Number(int const&)'
collect2: error: ld returned 1 exit status发布于 2016-02-19 17:39:45
尝试在g++命令行中添加"-fno-elide-constructors“:
g++ test1.cpp -lsymbolicc++ -fno-elide-constructors来自项目主页http://issc.uj.ac.za/symbolic/symbolic.html
在64位上使用GCC的SymbolicC++用户可能需要使用-fno-elide-constructors标志。
编辑:但这似乎更适用于仅头版本的库(有两个版本,标头版本和Autoconf库版本)。但是我尝试使用您的示例和AC库,对我来说,即使没有“-fno-elide”(Ubuntu14.04 64位,g++ 4.8.4),它也能很好地构建和工作。
编辑2:要总结一下,似乎库autoconf版本由于某种原因不能在每台机器上工作。对于只使用标头的库,-fno-elide-constructors标志需要与64位一起使用,-I选项用于指向标头位置(在此库是解压缩的):
g++ test1.cpp -fno-elide-constructors -I<path_to_headers>https://stackoverflow.com/questions/35510776
复制相似问题