[sword-devel] cross platform c# binding patch
Daniel Hughes
trampster at gmail.com
Thu Sep 25 03:09:46 MST 2014
Forgot to attach the patch...
On Thu, Sep 25, 2014 at 10:09 PM, Daniel Hughes <trampster at gmail.com> wrote:
> This patch fixes two of the issues found by Jon Behrens when trying to
> use the c# bingings on windows:
>
> That is 8.1 and 8.2 from his makingSwordForWindows.txt
>
> 8.1 is fixed by using Cdecl calling convention on every call
> 8.2 is fixed by removing the .so extension on the DLLNAME, mono/dot
> net is smart enough to find the lib with the correct extension if you
> do this.
>
> With this patch no change should be necessary in the c# code to run on windows.
>
> God bless,
> Daniel Hughes
-------------- next part --------------
Index: bindings/csharp/NativeMethods.cs
===================================================================
--- bindings/csharp/NativeMethods.cs (revision 3257)
+++ bindings/csharp/NativeMethods.cs (working copy)
@@ -73,53 +73,51 @@
public static class NativeMethods
{
+ public const string DLLNAME = "libsword";
-
- public const string DLLNAME = "libsword.so";
-
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_new();
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_newWithPath(string path);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_getModuleByName(IntPtr hSWMgr, string moduleName);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWModule_setKeyText(IntPtr hSWModule, string key);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_renderText(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_getRawEntry(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_getKeyText(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWMgr_delete(IntPtr hSWMgr);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_getModInfoList(IntPtr hSWMgr);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_stripText(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWModule_setRawEntry(IntPtr hSWModule, string entryBuffer);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWModule_terminateSearch(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern char org_crosswire_sword_SWModule_popError(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern long org_crosswire_sword_SWModule_getEntrySize(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_getEntryAttribute(IntPtr hSWModule, string level1, string level2, string level3, char filteredBool);
[DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
More information about the sword-devel
mailing list