c++ - 将 GMP 添加到自己的库

标签 c++ qt static-libraries gmp

如何将 GMP 添加到我的静态库?

在 MyLib.h 中我有

#include<gmp.h>
#include<gmpxx.h>

还有一些函数,比如:

void fun(mpz_t &a, mpz_t b){
     mpz_add(a,a,b);
}

我创建的静态库

gcc -std-c++11 -c mbib.c -o mbib.o
ar  rcs libmbib.a      mbib.o

我已经链接了 mbib.o,当我不使用那里的函数时,它可以工作。但是当我尝试使用它们中的任何一个时,我有:

/home/MBIB/libmbib.a(mbib.o):-1: In function `__gmp_binary_plus::eval(__mpz_struct*, __mpz_struct const*, __mpz_struct const*)': 
mbib.cpp:-1: error: undefined reference to `__gmpz_add'
/home/MBIB/libmbib.a(mbib.o):-1: In function `__gmp_binary_multiplies::eval(__mpz_struct*, __mpz_struct const*, long)':
mbib.cpp:-1: error: undefined reference to `__gmpz_mul_si'

我试过添加

LIBS += -L[path] -lgmp -lgmpxx

但它不起作用。

最佳答案

很简单:你不能。

你不能,因为你在创建静态库时没有与其他库“链接”,静态库只不过是一个收集目标文件的存档,你实际上并没有使用链接器来创建静态库图书馆。命令ar和文件名后缀.a都是“archive”的意思。

如果您有一个依赖于另一个静态库的静态库,那么您还需要为最终的可执行文件(或动态库)构建另一个库。

关于c++ - 将 GMP 添加到自己的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013865/

相关文章:

C++ 虚拟 "file"流

c++ - "QObject::startTimer: timers cannot be started from another thread"没有计时器 && CPU 消耗

c++ - 可以有一个 C++ GUI 静态库吗?但不是 .dll?

c++ - 设计一个快速的 "rolling window"文件阅读器

c++是否可以将对象类型传递给要与之比较的函数

c++ - 带有 GDIplus 的 Qt 无法读取 jpeg 图像的 exif 值(id、类型、长度工作)

c++ - 绘制 QTableView 的背景(使用自定义 QStyledItemDelegate)

c++ - 问题包括库 C++

c++ - Linux:C/C++ 标准库静态与动态链接

c++ - 如何在 C++ Linux 中使用 ICU 库将 UnicodeString 转换为 windows-1251?