Fatal error gmpxx h no such file or directory

When attempting to build LibIGL as a static library, a get a significant number of errors relating to the igl_cgal project, complaining about not being able to find gmpxx.h in my CGAL installation ...

I still have to comment out the #ifndef WIN32 statements in assign_scalar.cpp and assign_scalar.h to complile selfintersect.cpp from gptoolbox on a windows machine:

arch = '64'; % Computer architecture
msvc = '14'; % Version of Visual Studio

boost_version='1_67';
path_to_boost=['C:devboost_' boost_version '_0'];

cgal_version='4.12';
path_to_cgal=['C:devCGAL-' cgal_version];

eigen_version='5a0156e40feb';
path_to_eigen=['C:deveigen-eigen-' eigen_version];

path_to_libigl='C:devlibigl';

path_to_gmp=['C:devCGAL-' cgal_version 'auxiliarygmp'];

%%

MEXOPTS={'-v','-largeArrayDims','-DMEX'};

BOOST_INC=['-I' path_to_boost];
BOOST_LIB={['-L' path_to_boost 'lib' arch '-msvc-' msvc '.0'], ...
    ['-lboost_thread-vc' msvc '0-mt-x' arch '-' boost_version '.lib'], ...
    ['-lboost_system-vc' msvc '0-mt-x' arch '-' boost_version '.lib']};

CGAL_INC={['-I' path_to_cgal 'buildinclude'], ...
    ['-I' path_to_cgal 'include']};
CGAL_LIB={['-L' path_to_cgal 'buildlib'],...
    ['-lCGAL-vc' msvc '0-mt-' cgal_version '.lib'],...
    ['-lCGAL_Core-vc' msvc '0-mt-' cgal_version '.lib']};

CGAL_FLAGS='CXXFLAGS=$CXXFLAGS -frounding-math';

EIGEN_INC= ['-I' path_to_eigen];

GMP_INC=['-I' path_to_gmp 'include'];
GMP_LIB={['-L' path_to_gmp 'lib'], '-llibgmp-10.lib', '-llibmpfr-4.lib'};

LIBIGL_INC=['-I' path_to_libigl 'include'];
LIBIGL_FLAGS='-DIGL_SKIP';
LIBIGL_LIB={'-DIGL_SKIP'};
LIBIGL_LIBMATLAB='-DIGL_SKIP';
LIBIGL_LIBCGAL='-DIGL_SKIP';
LIBIGL_LIBCORK='-DIGL_NO_CORK';
LIBIGL_BASE={LIBIGL_INC, LIBIGL_FLAGS,LIBIGL_LIB{:}, LIBIGL_LIBMATLAB};

mex( ...
  MEXOPTS{:}, ...
  LIBIGL_BASE{:},EIGEN_INC, ...
  BOOST_INC, BOOST_LIB{:}, ...
  CGAL_INC{:},CGAL_LIB{:},CGAL_FLAGS, LIBIGL_LIBCGAL, ...
  GMP_INC, GMP_LIB{:},...
  'externalgptoolboxmexselfintersect.cpp');

Otherwise I get the error:

Error using mex
selfintersect.cpp
C:devCGAL-4.12includeCGAL/gmpxx.h(45): fatal error C1083: Cannot open include file: 'gmpxx.h': No such file or directory

Although the file exists «gmpxx.h» in the directory

C:devCGAL-4.12includeCGAL

?

I installed GMP and got following error while ‘make’:

In file included from smtparser.yy:22:
../../../../src/global.h:23:19: error: gmpxx.h: No such file or directory
In file included from ../../../../src/egraph/Enode.h:25,
from ../../../../src/egraph/Egraph.h:27,
from smtparser.yy:24:
../../../../src/egraph/EnodeTypes.h:210: error: ISO C++ forbids declaration of �mpq_class� with no type
../../../../src/egraph/EnodeTypes.h:210: error: expected �;� before �*� token
../../../../src/egraph/EnodeTypes.h: In constructor �TermData::TermData(Enode*)�:
../../../../src/egraph/EnodeTypes.h:198: error: class �TermData� does not have any field named �value�
../../../../src/egraph/EnodeTypes.h: At global scope:
../../../../src/egraph/EnodeTypes.h:334: error: ISO C++ forbids declaration of �mpq_class� with no type
../../../../src/egraph/EnodeTypes.h:334: error: expected �;� before �*� token
../../../../src/egraph/EnodeTypes.h: In constructor �SymbData::SymbData(char, int, const char*)�:
../../../../src/egraph/EnodeTypes.h:297: error: class �SymbData� does not have any field named �value�
../../../../src/egraph/EnodeTypes.h: In constructor �SymbData::SymbData(int, const char*)�:
../../../../src/egraph/EnodeTypes.h:316: error: �value� was not declared in this scope
../../../../src/egraph/EnodeTypes.h:316: error: expected type-specifier before �mpq_class�
../../../../src/egraph/EnodeTypes.h:316: error: expected `;’ before �mpq_class�
../../../../src/egraph/EnodeTypes.h: In destructor �SymbData::~SymbData()�:
../../../../src/egraph/EnodeTypes.h:327: error: �value� was not declared in this scope
../../../../src/egraph/EnodeTypes.h:328: error: type �<type error>� argument given to �delete�, expected pointer
In file included from ../../../../src/egraph/Egraph.h:27,
from smtparser.yy:24:
../../../../src/egraph/Enode.h: At global scope:
../../../../src/egraph/Enode.h:163: error: ISO C++ forbids declaration of �mpq_class� with no type
../../../../src/egraph/Enode.h:163: error: expected �;� before �&� token
../../../../src/egraph/Enode.h:188: error: expected �,� or �…� before �&� token
../../../../src/egraph/Enode.h:188: error: ISO C++ forbids declaration of �mpq_class� with no type
../../../../src/egraph/Enode.h: In member function �void Enode::setValue(int)�:
../../../../src/egraph/Enode.h:188: error: �struct TermData� has no member named �value�
../../../../src/egraph/Enode.h:188: error: �v� was not declared in this scope
../../../../src/egraph/Enode.h: At global scope:
../../../../src/egraph/Enode.h:188: warning: unused parameter �mpq_class�
../../../../src/egraph/Enode.h:290: error: expected initializer before �&� token
../../../../src/global.h:92: warning: �const char* logicStr(logic_t)� defined but not used
make[4]: *** [smtparser.lo] Error 1
make[4]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src/parsers/smt’
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src/parsers/smt’
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src/parsers’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src’
make: *** [all-recursive] Error 1

So I pasted gmpxx.h in /usr/include
using: sudo cp -r /home/harry/Desktop/gmpxx.h /usr/include

now error is:

In file included from ../../../../src/global.h:23,
from smtparser.yy:22:
/usr/include/gmpxx.h: In destructor �__gmp_alloc_cstring::~__gmp_alloc_cstring()�:
/usr/include/gmpxx.h:2096: error: �__gmp_free_func� was not declared in this scope
In file included from smtparser.yy:24:
../../../../src/egraph/Egraph.h: In member function �bool Egraph::checkEmptyExpl()�:
../../../../src/egraph/Egraph.h:286: warning: no return statement in function returning non-void
/usr/share/bison/bison.simple: In function �int smtparse()�:
/usr/share/bison/bison.simple:800: warning: deprecated conversion from string constant to �char*�
/usr/share/bison/bison.simple:925: warning: deprecated conversion from string constant to �char*�
../../../../src/global.h: At global scope:
../../../../src/global.h:92: warning: �const char* logicStr(logic_t)� defined but not used
make[4]: *** [smtparser.lo] Error 1
make[4]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src/parsers/smt’
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src/parsers/smt’
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src/parsers’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/harshit/Desktop/OpenSMT/build/src’
make: *** [all-recursive] Error 1

Any suggestions? or do I need to contact the developers of code?

0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

1

24.01.2015, 21:55. Показов 5631. Ответов 18


Не могу подключить gmp к Visual Studio 2013 Express. Пробовал на 2008 тоже не получается.
Прочитал кучу мануалов, собрал файлы gmp.h, gmpxx.h, libgmp-3.lib, libgmpxx-3.lib(есть ещё libgmp-10.dll и libgmpxx-4.dll). Но как бы я ни старался visual studio выдаёт кучу ошибок, если я подключаю gmpxx.h или ошибка «применение унарного минуса к типу без знака; результат оставлен без знака», если подключаю gmp.h. Сами эти ошибки происходят внутри .h файлов. Библиотеки пробовал пихать в VSlib и просто добавлять в проект ничего из этого не выходит.
Пробовал выставлять свойства
C++/Code Generation -> Runtime library = Multi-threaded (/MT)
Linker/Input -> Ignore Specific library = libc.lib
как описано в Как подключить gmp lib
но ничего не помогает

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

24.01.2015, 22:07

2

у вас похоже ошибки компиляции, а не линковки. если так, то манипуляции над .lib файлами и dllками ничего не дадут. до них дело не доходит. ошибки полностью выкладывайте. и код, если возомжно.



0



Comp123

0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

24.01.2015, 22:09

 [ТС]

3

Да я и ничего не делаю. Просто подключаю gmp и пробую компилировать пустой проект.

C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
#include <gmp.h>
 
 
int main()
{
    return 0;
}

error C4146: применение унарного минуса к типу без знака; результат оставлен без знака



0



1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

24.01.2015, 22:16

4

ну вот я качнул и подцепил gmp.h
есть список ворнигов. среди прочих — про унарный минус.
gmp.h(1565): warning C4146: unary minus operator applied to unsigned type, result still unsigned
ворнинг — это не ошибка. вполне возможно что так так и задумывалось, просто не сделали явный каст
для избавления от него. ну или т.к. это похоже сишная либа, там такое без ворнингов компилится.
раз у вас ошибка — посмотрите что у вас в настройках проекта:
Project->Properties->C/C++->General->Treat warnings as errors
Если стоит Yes, поменяйте на No



0



0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

24.01.2015, 22:21

 [ТС]

5

В настойках стоит «Нет (/WX-)». А можете скинуть ссылку откуда вы скачали? Как я понял вы качали уже собранную версию…



0



DU

1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

24.01.2015, 22:24

6

еще вариант — попробуйте задийеблить ворнинги прагмами:

C++
1
2
3
4
5
#pragma warning( disable : 4127 )
#pragma warning( disable : 4146 )
#include "gmp.h"
 
....

ссылка отсюда:
http://www.cs.nyu.edu/exact/core/gmp/
static GMP library and header file for Visual C++: gmp-static-vc-4.1.2.zip
http://www.cs.nyu.edu/exact/co… -4.1.2.zip

в MSVS 2012 ворнинги и с дизейблом тоже все ок.



1



Comp123

0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

24.01.2015, 22:34

 [ТС]

7

Ошибка ушла, но теперь если я пытаюсь использовать gmp опять появляются ошибки

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#pragma warning( disable : 4127 )
#pragma warning( disable : 4146 )
#include <gmp.h>
 
 
int main() {
    mpz_t x;
    mpz_init_set_si(x, 1);
 
    for (int i = 0; i < 100; i++)
        mpz_add(x, x, x);
 
    mpz_out_str(stdout, 10, x);
 
    return 0;
}

Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_add в функции _main D:c++testtesttest.obj test
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_init_set_si в функции _main D:c++testtesttest.obj test
Ошибка 3 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_out_str в функции _main D:c++testtesttest.obj test



0



1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

24.01.2015, 22:38

8

далее, читайте инструкцию, которую вы тут указывали.
у вас сейчас ошибки линковки из-за того, что к проекту не подключена собственно либа gmp.lib



0



0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

24.01.2015, 22:41

 [ТС]

9

Я подключаю её в Компоновщик->Ввод->Дополнительные зависимости. Дописываю туда «gmp.lib;»



0



1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

24.01.2015, 22:50

10

если что-то не так, указывайте что не так. даже если ошибки те же, что и в предыдущем шаге.
а то хз что у вас происходит.
предположу, что студия у вас не ищет эту либину в папке, в которой она лежит.
посмотрите в
Project->Properties->VC++ Directories->Library Directories
там надо указать папку, в которой у вас лежит gmp.lib



0



0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

24.01.2015, 23:07

 [ТС]

11

error LNK1120: неразрешенных внешних элементов: 2 D:c++testReleasetest.exe test
Ошибка 1 error LNK2001: неразрешенный внешний символ «@__security_check_cookie@4» D:c++testtesttest.obj test
Ошибка 2 error LNK2001: неразрешенный внешний символ «_mainCRTStartup» D:c++testtestLINK test
Это на Release выдаёт, а на debug то же самое:
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_add в функции _main D:c++testtesttest.obj test
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_init_set_si в функции _main D:c++testtesttest.obj test
Ошибка 3 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_out_str в функции _main D:c++testtesttest.obj test

Добавлено через 8 минут
Может я что то не правильно делаю..
Скачал по ссыле которую вы дали

Цитата
Сообщение от DU2
Посмотреть сообщение

Потом поместил gmp.h в …VCinclude
gmp.lib и gmpDebug.lib в …VClib
и gmp.dll и gmpDebug в …VCbin
потом в свойствах проекта в Компоновщик->Ввод->Дополнительные зависимости дописал «gmp.lib;gmpDebug.lib»
и поставил C/c++->Создание кода->Библиотека времени выполнения в /MT



0



1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

24.01.2015, 23:16

12

честно говоря хз в чем у вас там дело.
одно точно: две либы вы зря прописали.
дописал «gmp.lib;gmpDebug.lib»
одна — для дебаг конфигурации, другая — для релиза.
если вы откроете окно Project->Properties, то в левом верхнем углу будет указана конфигурация,
для которой меняются настройки. по умолчанию это дебаг.



0



593 / 531 / 76

Регистрация: 22.03.2011

Сообщений: 1,585

25.01.2015, 02:11

13

Лучший ответ Сообщение было отмечено Comp123 как решение

Решение

ашники и libgmp-3.lib пихай к исходникам, libgmp-3.dll в папку debug, сверху #include «gmp.h» и #pragma comment(lib, «libgmp-3.lib»);

всё, больше ничего делать не надо



1



0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

25.01.2015, 08:55

 [ТС]

14

OstapBender, сделал как вы писали. Удалил все файлы gmp из папки VC и добавил файлы к проекту. Ситуация осталась такая же
error C4146: применение унарного минуса к типу без знака; результат оставлен без знака если пишу #pragma warning те же ошибки



0



593 / 531 / 76

Регистрация: 22.03.2011

Сообщений: 1,585

25.01.2015, 13:14

15

что значит та же?
выше у вас были ошибки линковки, а сейчас вероятно просто неправильный вызов какой-то функции, написано же «применение унарного минуса к типу без знака; результат оставлен без знака»



0



Comp123

0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

25.01.2015, 15:25

 [ТС]

16

OstapBender, я никакую функцию не вызываю.

C++
1
2
3
4
5
6
7
8
9
#include "stdafx.h"
#include "gmp.h"
#pragma comment(lib, "libgmp-3.lib")
 
int main()
{
 
    return 0;
}

И он выдаёт ошибку error C4146: применение унарного минуса к типу без знака; результат оставлен без знака

Добавлено через 13 минут
Поставил

C++
1
2
#pragma warning( disable : 4127 )
#pragma warning( disable : 4146 )

и подключил библиотеку из

Цитата
Сообщение от DU2
Посмотреть сообщение

static GMP library and header file for Visual C++: gmp-static-vc-4.1.2.zip
http://www.cs.nyu.edu/exact/co… -4.1.2.zip

И всё, кажется, сработало!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#pragma warning( disable : 4127 )
#pragma warning( disable : 4146 )
#include "gmp.h"
#include <stdio.h>
#include "conio.h"
 
#pragma comment(lib, "gmp.lib")
#pragma comment(lib, "gmpDebug.lib")
 
int main()
{
    
    mpz_t  n;
    mpz_init_set_str(n, "123456", 0);
    mpz_mul(n, n, n);
    gmp_printf("%s is an mpz %Zdn", "here", n);
    mpz_clear(n);
    _getch();
    return 0;
}

Ответ: here is an mpz 15241383936
Спасибо!
Странно, почему с моей собранной библиотекой не работает…



0



0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

26.01.2015, 17:57

 [ТС]

17

Странно, вроде, все функции работают, но если я вызываю mpz_import или mpz_export у меня появляются ошибки при компиляции:
Ошибка 2 error LNK1120: неразрешенных внешних элементов: 1 D:c++test3Debugtest3.exe 1 1 test3
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ __imp____gmpz_import в функции _main D:c++test3test3test3.obj test3
Может кто знает решение данной проблемы?



0



1499 / 1145 / 165

Регистрация: 05.12.2011

Сообщений: 2,279

26.01.2015, 21:25

18

в либе из ссылки таких функций нет. в h файле есть, а в .lib файлах — нет. почему — хз.
если вам нужны эти функции — никакие манипуляции с настройками проекта вам не помогут.
вы можете попробовать их сами заимплементить, либо найти другую собранную библиотеку,
либо самостоятельно собрать.



1



0 / 0 / 0

Регистрация: 31.10.2014

Сообщений: 17

27.01.2015, 05:19

 [ТС]

19

Хорошо, буду пробовать опять свою сборку подключать. Спасибо!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

27.01.2015, 05:19

19

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Fatal error glibc detected an invalid stdio handle
  • Fatal error glib h no such file or directory
  • Fatal error gl arb clip control not available please update your video driver
  • Fatal error ghostrunner что делать
  • Fatal error gettextwrapper unable to write language settings ок

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии