[Gmsh] Error linking

Christophe Geuzaine cgeuzaine at ulg.ac.be
Thu Feb 6 16:17:12 CET 2014


On 06 Feb 2014, at 11:45, Agnese, Marco <m.agnese13 at imperial.ac.uk> wrote:

> Hi Christophe,
> I compiled the version gmsh-2.8.4-svn-20140206 with the same procedure I posted yesterday. 
> Then I try to run this simple code:
> 
> #include <iostream>
> 
> #include <stdio.h>
> #include "Gmsh.h"
> #include "GModel.h"
> 
> int main(int argc, char **argv)
> {
> 
>  GmshInitialize(argc, argv);
>  GmshSetOption("General", "Terminal", 1.);
>  GmshSetOption("General", "Verbosity", 99.);
>  GModel *m = new GModel();
> 
>  m->setFactory("Gmsh");
> 
>  GVertex *v1 = m->addVertex(0, 0, 0, 0.1);
>  GVertex *v2 = m->addVertex(1, 0, 0, 0.1);
>  GVertex *v3 = m->addVertex(1, 1, 0, 0.1);
>  GVertex *v4 = m->addVertex(0, 1, 0, 0.1);
> 
>  std::vector<GEdge*> edges;
>  edges.push_back(m->addLine(v1, v2));
>  edges.push_back(m->addLine(v2, v3));
>  edges.push_back(m->addLine(v3, v4));
>  edges.push_back(m->addLine(v4, v1));
> 
>  std::vector<std::vector<GEdge*> > loop;
>  loop.push_back(edges);
>  GFace *f = m->addPlanarFace(loop);
> 
>  m->mesh(2);
>  m->writeMSH("test.msh");
>  delete m;
>  GmshFinalize();
> 
> }
> 
> It compiles correct but when I run it the code doesn't do anything. Indeed the content of test.msh is
> 
> $MeshFormat
> 2.2 0 8
> $EndMeshFormat
> $Nodes
> 0
> $EndNodes
> $Elements
> 0
> $EndElements
> .
> 
> The output of the debug is 
> 
> Debug   : Surface: 1
> Debug   : SVD    : 1,1,0 (min=2)
> Debug   : Plane  : (0 x + 0 y + 1 z = 0)
> Debug   : Normal : (0 , 0 , 1 )
> Debug   : t1     : (0 , 1 , 0 )
> Debug   : t2     : (1 , 0 , 0 )
> Debug   : pt     : (0 , 0 , 0 )
> Error   : Mesh module not compiled
> 
> Is it a problem in compiling the library or I miss something when I link it to my own code?
> 

You configured Gmsh with "-DDEFAULT=0". This means that you did not include any modules, in particular you did not include the mesh module ;-) Either reconfigure without this (Gmsh will try to detect and configure with the default set of modules), or selectively add what you need (e.g. ENABLE_MESH=1). See http://geuz.org/gmsh/doc/texinfo/gmsh.html#Compiling-the-source-code for a description of all the optional modules.

Ch.


> Thank you very much,
> Marco
> 
> 
> ________________________________________
> From: Christophe Geuzaine [cgeuzaine at ulg.ac.be]
> Sent: Thursday, February 06, 2014 8:18 AM
> To: Agnese, Marco
> Cc: gmsh at geuz.org
> Subject: Re: [Gmsh] Error linking
> 
> Hi Marco,
> 
> Indeed, it's a little incompatibility in gmsh 2.8.3 - it should be fixed with the latest nightly snapshot. Can you give it a try?
> 
> Christophe
> 
> On 05 Feb 2014, at 20:20, Agnese, Marco <m.agnese13 at imperial.ac.uk> wrote:
> 
>> Hello GMSH,
>> I am trying to compile a simple code which uses GMSH API.
>> I compiled the GMSH source as:
>> 
>> cmake -DDEFAULT=0 -DENABLE_BUILD_LIB=1 -DENABLE_BUILD_SHARED=1 -DENABLE_BUILD_DYNAMIC=1 -DCMAKE_INSTALL_PREFIX=../lib_install ..
>> make lib
>> make shared
>> make install/fast
>> 
>> and everything it is fine.
>> When I compile my code with the command
>> 
>> g++ -c -m64 -pipe -O2 -Wall -W -fPIE  -I/usr/share/qt5/mkspecs/linux-g++-64 -I../gmsh_test -I../../gmsh-2.8.3-source/lib_install/include/gmsh -I. -o main.o ../gmsh_test/main.cpp
>> 
>> and link with the command
>> 
>> g++ -m64 -Wl,-O1 -o gmsh_test main.o   -L/home/ma2413/gmsh_test/gmsh_test/../../gmsh-2.8.3-source/lib_install/lib/ -lGmsh
>> 
>> I obtain the following errors
>> 
>> $HOME/gmsh_test/gmsh_test/../../gmsh-2.8.3-source/lib_install/lib//libGmsh.so: undefined reference to "typeinfo for Field"
>> $HOME/gmsh_test/gmsh_test/../../gmsh-2.8.3-source/lib_install/lib//libGmsh.so:undefined reference to "FieldManager::get(int)"
>> 
>> I don't know what I am doing wrong.
>> 
>> Thank you very much,
>> regards,
>> Marco.
>> 
>> _______________________________________________
>> gmsh mailing list
>> gmsh at geuz.org
>> http://www.geuz.org/mailman/listinfo/gmsh
> 
> --
> Prof. Christophe Geuzaine
> University of Liege, Electrical Engineering and Computer Science
> http://www.montefiore.ulg.ac.be/~geuzaine
> 
> 

-- 
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science 
http://www.montefiore.ulg.ac.be/~geuzaine