[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