From: William S F. <ws...@fu...> - 2013-01-29 21:02:06
|
On 29/01/13 12:32, Владимир Чернышев wrote: > > On Sat, Jan 26, 2013 at 8:16 PM, William S Fulton > <ws...@fu... <mailto:ws...@fu...>> wrote: > SWIG support standards for the input C and C++, but the target > languages aren't necessarily standards based. For .net, SWIG > supports the ECMA C# standard and that works for many .net > environments. Unfortunately Microsoft don't support .net > consistently on all their .net platforms, in particular Compact > Framework, for example HandleRef is missing. Some users have > modified SWIG to work around this, see > http://swig.10945.n7.nabble.__com/C-and-the-Compact-__Framework-windows-mobile-__td9989.html > <http://swig.10945.n7.nabble.com/C-and-the-Compact-Framework-windows-mobile-td9989.html>. > > > > I've done a small research using the information from the link above. As > link is a bit outdated, the patched files couldn't be applied to the > current swig. I've tried using swig 1.3.36 and replaced some files > according to the post. Good news are it really fixes using of HandleRef. > The bad news are it uses methods like SysAllocString and SysFreeString, > for which I can't find any header in Windows Phone Kits SDK. Current > Swig seems not to have such problem. So it seems for me that the only > way for me is to modify current swig so as to avoid using HandleRef in a > manner from the link. In theory that should just involve typemaps, mostly in csharp.swg. I see one HandleRef has unfortunately crept into csharp.cxx but this is for directors. > Sounds reasonable. Unfortunately I can't google anything useful about > the topic. Any way, I'll continue searching. > > Владимир, I suggest you try a single minimalistic test with a global > function that takes just primitive types that avoid HandleRef, such > as this SWIG interface file: > > %module example > > %inline %{ > int add(int a, int b) { > return a+b; > } > %} > > and report back. > > I've tried this example, it was compiled with no errors, but in as soon > as I called P/Invoke I received an exception, exactly as in this topic > http://stackoverflow.com/questions/7807361/how-to-p-invoke-to-a-native-dll-from-metro At this point, you probably want to just give up on Windows dev and just target Android with the SWIG Java wrappers :) William |