gpt4 book ai didi

c++ - GiNaC 未定义引用

转载 作者:行者123 更新时间:2023-11-28 07:26:21 26 4
gpt4 key购买 nike

我目前正在尝试开发一个 C++ 应用程序,它将涉及使用 GiNaC 解决一些代数任务(例如微分或积分);我首先从 Ubuntu 软件中心 (Ubuntu 13.04) 安装了它,然后直接从 ftp ftp://ftpthep.physik.uni-mainz.de/pub/GiNaC/ 安装了它。 ;但是,每次我尝试编译以下示例程序时:

#include <iostream>
#include <ginac/ginac.h>
using namespace std;
using namespace GiNaC;

int main()
{
symbol x("x"), y("y");
ex poly;

for (int i=0; i<3; ++i)
poly += factorial(i+16)*pow(x,i)*pow(y,2-i);

cout << poly << endl;
return 0;
}

我得到一个错误列表,所有错误都以“对 GiNaC::的 undefined reference ”开头。我已验证还安装了 cln,并且头文件位于默认位置。此外,在编译时我使用了命令 g++ -o simple pkg-config --cflags --libs ginac simple.cppg++ -o simple -lginac -lcln simple.cpp,都编译失败。

最佳答案

问题是编译行中参数的顺序。尝试以下两种变体之一:

g++ -o simple simple.cpp `pkg-config --cflags --libs ginac`

g++ -o simple -Wl,--no-as-needed `pkg-config --cflags --libs ginac` simple.cpp

这个想法是目标文件和库的顺序对链接器很重要。非常简单地说,默认情况下,它仅在需要它来解析一些以前未解析的符号时才链接库。

上面的第一个变体将库移动到构建参数的末尾(因此在代码的目标文件之后),而第二个变体在链接器中禁用此行为。

关于c++ - GiNaC 未定义引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com