Ошибка компиляции C ++ против библиотеки GNU Multi-Precision - PullRequest
0 голосов
/ 07 сентября 2011

Я получаю следующую ошибку при компиляции этой сторонней библиотеки (называемой azove 2.0 ), которая опирается на библиотеку GNU Multi-precision :

> make
g++ -Wall -O3 -DFIX_NUMBER_OF_SIGMDDNODE_SONS -DUSE_TIMER -I. -c conBDD.cpp -o conBDD.o
In file included from conBDDnode.hpp:27,
                 from conBDD.hpp:25,
                 from conBDD.cpp:22:
/usr/include/gmpxx.h: In destructor ‘__gmp_alloc_cstring::~__gmp_alloc_cstring()’:
/usr/include/gmpxx.h:2096: error: ‘strlen’ was not declared in this scope
conBDD.cpp: In member function ‘void conBDD::build()’:
conBDD.cpp:61: error: ‘numeric_limits’ was not declared in this scope
conBDD.cpp:61: error: expected primary-expression before ‘int’
conBDD.cpp:61: error: expected `;' before ‘int’
conBDD.cpp:68: error: expected primary-expression before ‘int’
conBDD.cpp:68: error: expected `;' before ‘int’
make: *** [conBDD.o] Error 1

Я попытался добавить одну и обе следующие строки

#include <cstdlib> 

using std::strlen;

до conBDD.cpp, но ошибка сохраняется.

Я не могу сказать, произошла ли ошибка из библиотеки Multi-Precision GNU или из Azove. Любые указатели будут с благодарностью.

1 Ответ

2 голосов
/ 07 сентября 2011

Я бы начал с распределения вины.Создайте пустой файл cpp, скажем test.cpp, в своем проекте и включите в него только поврежденный файл gmpxx.h.Если вы можете скомпилировать тестовый cpp, GMP сорвется с крючка.Затем попробуйте включить только заголовок Azove.Если вы можете скомпилировать заголовок azove в другом пустом файле, azove снят с крючка, и то, что вы включаете / определяете, мешает им.После того как вы сузили источник проблемы, вам будет легче ее исправить.

...