[sword-devel] .Net Exception Odd behavior...

Ben Morgan benpmorgan at gmail.com
Fri Aug 21 16:09:41 MST 2009


It is getting pretty hard to compile with C#, as C# doesn't have as good
support with SWIG. There are two problems here - one is that some of the new
code that I added for Python (which is currently the principal target)
doesn't work on C#, as SWIG for C# doesn't handle some of the templates -
I'll try to fix that (by #ifdef'ing out the code which doesn't work for
C#...)

The other problem is that SWIG wasn't generating code which wouldn't compile
without modifying.
I think I did get some code compiling under C# last time some one asked
about it, but it wasn't easy.

As to the GC problem, at least on python you set filterManager.thisown =
False, and this means it won't be GC'ed. Not sure if SWIG has the same thing
for C#.

God Bless,
Ben
-------------------------------------------------------------------------------------------
Multitudes, multitudes,
    in the valley of decision!
For the day of the LORD is near
    in the valley of decision.

Giôên 3:14 (ESV)
On 22/08/2009, Wade Balzer <wbalzer at newjerusalem.org> wrote:
>
>  That was the biggest problem I had was trying to regenerate the wrapper.
>
>
>
> I compile all the latest updates successfully in VS C++ 2008, but I can’t
> get SWIG to regenerate the wrapper for C#.  So I have been using an older
> version of the compiled binary that is buggy.
>
>
>
> The latest version of SWIG does have fixes and better handling, but I can’t
> get it to compile.  Ugh.  Apparently,  the latest updates to the header
> library were targeted to a PHP target leaving a C# target broken.  :-(
>
>
>
> So… because I couldn’t get it working, I  started to create my own modules
> from an OSIS source.  I was going to parse out the modules and place them on
> a SQL Server, but my tests have been slow searching through an unindexed
> field. (2 minutes to search for a single word using a CLR Regex function.
> Yuck.)   At least with a map of an OSIS document, I can locate each verse
> and traverse all the verses in the bible in under 5 seconds.  If I create a
> binary index, I can return all occurrences of God in less than a second.
>
>
>
> I think I still would rather use the SWORD Library because it is faster on
> searches, and has more people involved in updating the core library.
>
>
>
> My only other option was to create a native C# Sword Library, but I don’t
> have the time or energy to recreate the wheel.
>
>
>
> If anyone can help by taking the latest code base, and recompile a working
> SwigSword.dll targeted for C# and accompanying dll’s, that would be very
> helpful.  Let me know how you got it working would cool too.
>
>
>
> Thanks,
>
>
>
> Wade
>
>
>
> *From:* Jeff Becker [mailto:jbecker at fiveviews.com]
> *Sent:* Friday, August 21, 2009 11:11 AM
> *To:* SWORD Developers' Collaboration Forum
> *Subject:* Re: [sword-devel] .Net Exception Odd behavior...
>
>
>
> It could be the same problem I ran into some time back.  The SwigSword code
> destroys some pointers then tries to use them again.  Under .Net 1.0 it
> wasn't a problem because the error was ignored.  Under .Net 2.0 it raises an
> error and crashes the calling application.  In my case it was MS Word since
> I was working on an Add-In but it would probably crash anything calling the
> dll.
>
>
>
> I'm hoping that Swig has fixed the .Net 2.0 pointer issue.  If that's the
> case then the easiest approach might be to regenerate the wrapper.  I'm
> guessing that the problem isn't in just one property or method since the
> code relatively consistent throughout.
>
> -----Original Message-----
> *From:* Wade Balzer [mailto:wbalzer at newjerusalem.org]
> *Sent:* Friday, July 31, 2009 11:42 AM
> *To:* sword-devel at crosswire.org
> *Subject:* [sword-devel] .Net Exception Odd behavior...
>
> I am working on a Bible project in C# for the web.  I am using the
> SwigSword.dll wrapper.
>
>
>
> When I load the manager using the default location for the modules as
> provided by the SWORD_PATH environment, it words fine and the debugger exits
> without a problem.
>
>
>
> filterManager = new MarkupFilterMgr((char)Sword.FMT_OSIS, (char)Sword
> .ENC_HTML);
>
> manager = new SWMgr( filterManager);
>
>
>
> GC.SuppressFinalize(filterManager);
>
>
>
> However since this will be a web environment, I need to directly point to
> the Module locations without directly pointing to my local %SWORD_PATH%
> variable.
>
>
>
> When I set the location of the config, and manually set the location of the
> module path, everything seems to work fine until I exit the debugger.  It
> CRASHES.
>
>
>
> SWConfig config = new SWConfig(BaseModDir + "mods.d\\global.conf");
>
> SWConfig sysconfig = null;
>
>
>
> filterManager = new MarkupFilterMgr((char)Sword.FMT_OSIS, (char)Sword
> .ENC_HTML);
>
> //manager = new SWMgr( filterManager);
>
> manager = new SWMgr(config, sysconfig, false, filterManager);
>
> manager.configPath = BaseModDir + "mods.d\\";
>
> manager.prefixPath = BaseModDir;
>
> manager.Load();
>
>
>
> manager.augmentModules(BaseModDir);
>
>
>
> GC.SuppressFinalize(filterManager);
>
>
>
> I am not sure why the first one works without a problem, and the second one
> works, but crashes on exit.
>
>
>
> HELP!!!
>
>
>
> Thanks,
>
>
>
> Wade
>
>
>
>
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20090822/ce7d2e8c/attachment-0001.html>


More information about the sword-devel mailing list