From: Service I. <inf...@st...> - 2009-09-08 16:04:06
|
Hello, I'm new to Swig and am lost :( I wanted to create a Visual C# wrapper for a dll (for which I have the .h and .cpp files) and Swig has created 16 files : 15 .cs and 1 *.cxx My question is : what do I do with these 16 files in Visual Studio ? I've used a simple interface file : %module Artemis %{ /* Includes the header in the wrapper code */ #include "ArtemisHSCAPI.h" %} /* Parse the header file to generate wrappers */ %include "ArtemisHSCAPI.h" Right now, I'm stuck :( It seems everything is fine on the Swig side, but I don't konw where to go now. So any help would be welcome here. Regards, __________ Christophe |
From: Ivan Le L. <iva...@fr...> - 2009-09-08 22:49:54
|
Hello, > I'm new to Swig and am lost :( > > I wanted to create a Visual C# wrapper for a dll (for which I have the > .h and .cpp files) and Swig has created 16 files : 15 .cs and 1 *.cxx > > My question is : what do I do with these 16 files in Visual Studio ? > > As said in the C# specific documentation, cs files use PInvoke to call the code flattened in the cxx file. See ArtemisPInvoke.cs among generated files and the DllImports corresponding to the cxx file So basically, in a solution already containing your C++ project : Make a C# library called something like ArtemisCSharp and put generated .cs files in there. Add the generated cpp file to your C++ project, or make it its own dll : a new dll project linking to your C++ project. The c++ dll name must match the swig module name. Or use the C# specific "-dllimport foo" command line option. Ensure at runtime that the c++ dll called by PInvoke is present near C# library. Regards, Ivan. > I've used a simple interface file : > > %module Artemis > %{ > /* Includes the header in the wrapper code */ > #include "ArtemisHSCAPI.h" > %} > > /* Parse the header file to generate wrappers */ > %include "ArtemisHSCAPI.h" > > > Right now, I'm stuck :( It seems everything is fine on the Swig side, > but I don't konw where to go now. > So any help would be welcome here. > > > Regards, > __________ > Christophe > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > > > |
From: Service I. <inf...@st...> - 2009-09-09 10:04:06
|
Hello, it seems to work now. You can find in the enclosed screenshot the structure of the global project : - a CPP library containing the original .h and .cpp, and the SWIG generated .cxx file - a c# library which is the wrapper, referencing the CPP lib and containing the SWIG generated .cs files - a c# windows application that is using the wrapper. Original DLL file, C++ project library DLL, wrapper DLL are in the same output directory as the application project. Everything seems to work fine. I will have to check in "real life" this evening when I will connect the device and check functions for it. In the meantime, I thank you very much for your help ! I have a question, though : why are the generated class members "static" ? This prevent for instanciating the methods. As I don't use c++, there may be something related to the original code or does SWIG generates static methods by default ? If it is the case, is there any reason for it or can I "remove" the static keyword ? Best regards, ___________ Christophe Ivan Le Lann a écrit : > Hello, >> I'm new to Swig and am lost :( >> >> I wanted to create a Visual C# wrapper for a dll (for which I have the >> .h and .cpp files) and Swig has created 16 files : 15 .cs and 1 *.cxx >> >> My question is : what do I do with these 16 files in Visual Studio ? >> >> > As said in the C# specific documentation, cs files use PInvoke to call > the code flattened in the cxx file. > See ArtemisPInvoke.cs among generated files and the DllImports > corresponding to the cxx file > > > So basically, in a solution already containing your C++ project : > > Make a C# library called something like ArtemisCSharp and put generated > .cs files in there. > > Add the generated cpp file to your C++ project, or make it its own dll : > a new dll project linking to your C++ project. > The c++ dll name must match the swig module name. Or use the C# specific > "-dllimport foo" command line option. > > Ensure at runtime that the c++ dll called by PInvoke is present near C# > library. > > Regards, > Ivan. > >> I've used a simple interface file : >> >> %module Artemis >> %{ >> /* Includes the header in the wrapper code */ >> #include "ArtemisHSCAPI.h" >> %} >> >> /* Parse the header file to generate wrappers */ >> %include "ArtemisHSCAPI.h" >> >> >> Right now, I'm stuck :( It seems everything is fine on the Swig side, >> but I don't konw where to go now. >> So any help would be welcome here. >> >> >> Regards, >> __________ >> Christophe >> >> ------------------------------------------------------------------------------ >> >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >> 30-Day trial. Simplify your report design, integration and deployment >> - and focus on what you do best, core application coding. Discover >> what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july >> _______________________________________________ >> Swig-user mailing list >> Swi...@li... >> https://lists.sourceforge.net/lists/listinfo/swig-user >> >> >> > |
From: William S F. <ws...@fu...> - 2009-09-15 06:34:08
|
Christophe, the static methods are just in the module class, which is like a kind of helper class for every single C++ method being wrapped. The proxy classes have instance or static methods as is appropriate for the C++ class being wrapped. William Service Informatique wrote: > Hello, > > it seems to work now. You can find in the enclosed screenshot the > structure of the global project : > - a CPP library containing the original .h and .cpp, and the SWIG > generated .cxx file > - a c# library which is the wrapper, referencing the CPP lib and > containing the SWIG generated .cs files > - a c# windows application that is using the wrapper. > > Original DLL file, C++ project library DLL, wrapper DLL are in the same > output directory as the application project. Everything seems to work > fine. I will have to check in "real life" this evening when I will > connect the device and check functions for it. > > In the meantime, I thank you very much for your help ! > > > I have a question, though : why are the generated class members "static" > ? This prevent for instanciating the methods. > As I don't use c++, there may be something related to the original code > or does SWIG generates static methods by default ? > If it is the case, is there any reason for it or can I "remove" the > static keyword ? > > > Best regards, > ___________ > Christophe > > > Ivan Le Lann a écrit : >> Hello, >>> I'm new to Swig and am lost :( >>> >>> I wanted to create a Visual C# wrapper for a dll (for which I have the >>> .h and .cpp files) and Swig has created 16 files : 15 .cs and 1 *.cxx >>> >>> My question is : what do I do with these 16 files in Visual Studio ? >>> >>> >> As said in the C# specific documentation, cs files use PInvoke to call >> the code flattened in the cxx file. >> See ArtemisPInvoke.cs among generated files and the DllImports >> corresponding to the cxx file >> >> >> So basically, in a solution already containing your C++ project : >> >> Make a C# library called something like ArtemisCSharp and put generated >> .cs files in there. >> >> Add the generated cpp file to your C++ project, or make it its own dll : >> a new dll project linking to your C++ project. >> The c++ dll name must match the swig module name. Or use the C# specific >> "-dllimport foo" command line option. >> >> Ensure at runtime that the c++ dll called by PInvoke is present near C# >> library. >> >> Regards, >> Ivan. >> >>> I've used a simple interface file : >>> >>> %module Artemis >>> %{ >>> /* Includes the header in the wrapper code */ >>> #include "ArtemisHSCAPI.h" >>> %} >>> >>> /* Parse the header file to generate wrappers */ >>> %include "ArtemisHSCAPI.h" >>> >>> >>> Right now, I'm stuck :( It seems everything is fine on the Swig side, >>> but I don't konw where to go now. >>> So any help would be welcome here. >>> >>> >>> Regards, >>> __________ >>> Christophe >>> >>> ------------------------------------------------------------------------------ >>> >>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >>> 30-Day trial. Simplify your report design, integration and deployment >>> - and focus on what you do best, core application coding. Discover >>> what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july >>> _______________________________________________ >>> Swig-user mailing list >>> Swi...@li... >>> https://lists.sourceforge.net/lists/listinfo/swig-user >>> >>> >>> > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |