[Gmsh] Having problems linking gmsh sdk libraries

Christophe Geuzaine cgeuzaine at uliege.be
Thu Aug 2 12:43:10 CEST 2018


Dear Longhui,

The import library is currently named libgmsh.dll.a. So to compile the "simple.cpp" example with Microsoft Visual Studio 2017 in the
Visual Studio shell, you would do:

C:\gmsh-git-Windows64-sdk> ren include\gmsh.h_cwrap include\gmsh.h
C:\gmsh-git-Windows64-sdk> cl /Iinclude share\doc\gmsh\demos\api\simple.cpp lib\libgmsh.dll.a
C:\gmsh-git-Windows64-sdk> cd lib
C:\gmsh-git-Windows64-sdk\lib> ..\simple.exe

Christophe

> On 30 Jul 2018, at 15:36, Max Orok <morok at mevex.com> wrote:
> 
> Hi Longhui, 
> 
> This might not be super helpful but here is the compiler command to get t1.cpp to compile fresh out of the 64bit SDK using MinGW:
> 
> cd /gmsh-git-Windows64-sdk
> g++ t1.cpp -Iinclude -Llib -lgmsh
> 
> Please note I copied t1.cpp to the top level directory above bin, include, lib, share. 
> -I specifies the include directory, -L the dll directory, and -l the actual dll to link. 
> 
> Perhaps you can try with cl.exe on the command line with the corresponding flags?
> 
> Max
> 
> 
> 
> 
> On Sun, Jul 29, 2018 at 9:16 PM, Li Longhui <lilonghui at hotmail.com> wrote:
> Hi Max,
> 
>  
> 
> Thank you for your quick feedbacks.
> 
>  
> 
> I followed your advice trying with the wrap file but it behaved same.
> 
>  
> 
> I did more research with findings below.
> 
>  
> 
> On windows, to release a dynamic library, three types of files are to be released.
> 
> 1)     The header file             .h
> 
> In this file declarations of APIs will be described, such as
> 
> gmsh::initialized()
> 
>       this file can be included in source files using APIs within.
> 
>  
> 
> 2)     The linkage file             .lib
> 
> This file tells in linkaging stage which .dll file and which APIs should be linkaged and accordingly will be called during execution. 
> 
> This file will always be generated together with the .dll file.
> 
> Actually there is some tool from mingw that will generating .lib file by extracting information from .dll file
> 
>  
> 
> 3)     The executable file       .dll
> 
> This is the actual executable file and used only during execution stage.
> 
>  
> 
> Following the findings above, I was not able to find the corresponding .lib file from the .dll file.
> 
>  
> 
> As this is a generic issue, I am wondering if someone can help.
> 
>  
> 
> Please feel free to let me know in case of any issues.
> 
>  
> 
> Thanks Much,
> 
> Longhui
> 
>  
> 
> 发件人: Max Orok [mailto:morok at mevex.com] 
> 发送时间: 2018年7月30日 5:34
> 收件人: Li Longhui <lilonghui at hotmail.com>; gmsh at onelab.info
> 主题: Re: [Gmsh] Having problems linking gmsh sdk libraries
> 
>  
> 
> Hello Longhui, 
> 
>  
> 
> Not a VS expert but have you tried using the cwrap versions of these files?
> 
> I got it to work on Windows with that method.
> 
> It is explained nicely here: https://gitlab.onelab.info/gmsh/gmsh/tree/master/api
> 
>  
> 
> The following is taken from the relevant readme.md file:
> 
>  
> 
> "The additional file `gmsh.h_cwrap' redefines the C++ API in terms of the C API.
> This is provided as a convenience for users of the binary Gmsh SDK whose C++
> compiler ABI is not compatible with the ABI of the C++ compiler used to create
> the SDK. To use these C++ bindings of the C API instead of the native C++ API,
> simply rename `gmsh.h_cwrap' as `gmsh.h'. Note that this will lead to (slightly)
> reduced performance compared to using the native Gmsh C++ API, as it entails
> additional data copies between the C++ wrapper, the C API and the native C++
> code."
> 
>  
> 
> The libgmsh.dll is essential for sure, not sure about the .lib. I also had to put the gmsh-3.0.dll in the same folder as my executable.
> 
> And if not, there's always Python!
> 
>  
> 
> Good luck!
> 
> Max Orok
> 
>  
> 
> On Sun, Jul 29, 2018 at 10:55 AM, Li Longhui <lilonghui at hotmail.com> wrote:
> 
> Greetings,
> 
>  
> 
> This is Longhui.
> 
>  
> 
> I am evaluating the gmsh sdks with C/C++ on windows, and having problems linking the SDK libraries.
> 
>  
> 
> I am wondering if some experts can have a look?  Thanks.
> 
>  
> 
> Here are what I have done
> 
> 1.     In Visual Studio 2015, create a function as below
> 
>  
> 
> <image001.png>
> 
> 2.     Configure the sdk include path and the sdk library path
> 
> <image002.jpg>
> 
>  
> 
> The codes can be built without compiling errors, but having linkage errors
> 
> <image003.jpg>
> 
>  
> 
> I have tried with both 32-bit and 64-bit sdks, and they have behaved exactly same.
> 
>  
> 
> Should I have the Can I have the two files
> 
> libgmsh.dll
> 
> libgmsh.lib
> 
>  
> 
> Do we need a libgmsh.dll and libgmsh.lib file?
> 
>  
> 
> Any advices will be greatly appreciated/
> 
>  
> 
> Thanks Much,
> 
> Longhui
> 
> 
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh
> 
> 
> 
> 
> -- 
> 
> Max Orok
> 
> Summer Student
> 
> www.mevex.com
> 
> <image004.jpg>
> 
> 
> 
> 
> -- 
> Max Orok
> Summer Student
> www.mevex.com
> 
> 
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh

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

Free software: http://gmsh.info | http://getdp.info | http://onelab.info

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20180802/c6863ea1/attachment.html>


More information about the gmsh mailing list