On 9/03/2012 11:46 a.m., Rolf Bjarne Kvinge wrote:
Hi,
I'm pretty sure there was a bug about it, but now I can't find it.
In any case there is a test project in this bug:
https://bugzilla.xamarin.com/show_bug.cgi?id=3708 you can use to see how it's
done there: just make sure you apply the workaround mentioned in the first
comment in the bug (so you don't run into the issue that bug's about).
Thanks for that. That test project worked fine for me so I knew it should all
work and it lead me to figure out what was wrong. Unfortunately now I'm in a
bind caught between two limitations of the system.
My situation is this:
The project is cross platform for droid and touch with a test version on
console for .net and mono. The resource strings are considered to be a cross
platform part of the project and so are in the cross platform project (call it
xplatform for arguments sake). To build xplatform for the three different
platforms in the same solution I have three projects in the solution called
xplatform, xplatform.MT and xplatform.MD with identical files but referencing
different mono libs and targeting different platforms for the output.
To get the resources to load properly it looks as though the output files from
the three projects should all be called xplatform.dll. If I call one of them
xplatform.MT.dll then the resourcemanager need to load that file for the base
resources ad so the resources are no longer handled in a cross platform way. It
is possible in the project options to have the dll filename set differently
from the project name so I tried that. For xplatform.MT I set the output file
to xplatform.dll. I reset the iOS simulator and did a rebuild all.
Unfortunately there seems to be a bug in monodevelop or monotouch somewhere
because now when the application tries to load it crashes on loading. So it
seems that the project name and it's dll filename must be the same in monotouch.
Does anyone have a good idea for working around this? At the moment I'm
considering moving the resources into the platform specific parts of the
application despite the fact that they will all use the same files and this
will preclude using string resources in the cross platform code (not ideal).
The crash info from the application output window is below... (note that the
executable is also called xplatform) When I change the output .dll name back to
xplatform.MT.dll and rebuild/reset simulator then the exception goes away. Oh,
another thing I checked was that the xplatform.dll that is deployed to the
simulator really is the one that is targeted to monotouch (the files are
different sizes and output to different directories to avoid overwriting).
Launching application
Application launched. PID = 4903
Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll [External]
Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll
[External]
Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.dll [External]
Thread started:
Stacktrace:
at (wrapper managed-to-native) System.Reflection.Assembly.GetTypes
(System.Reflection.Assembly,bool) <IL 0x0002e, 0xffffffff>
at System.Reflection.Assembly.GetTypes () [0x00000] in
/Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/Assembly.cs:357
at MonoTouch.ObjCRuntime.Runtime.RegisterAssembly
(System.Reflection.Assembly) [0x00062] in
/Developer/MonoTouch/Source/monotouch/src/ObjCRuntime/Runtime.cs:92
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object
(object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>
Native stacktrace:
0 xplatform 0x000908ec mono_handle_native_sigsegv
+ 284
1 xplatform 0x00005c88 mono_sigsegv_signal_handler
+ 248
2 libsystem_c.dylib 0x9c0d459b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 ??? 0x099ef64f 0x0 + 161412687
5 ??? 0x099ef5b2 0x0 + 161412530
6 ??? 0x099883f7 0x0 + 160990199
7 ??? 0x0998873e 0x0 + 160991038
8 xplatform 0x00009ff2 mono_jit_runtime_invoke +
722
9 xplatform 0x00169eee mono_runtime_invoke + 126
10 xplatform 0x0020267f monotouch_register + 95
11 xplatform 0x002115d7 main + 2583
12 xplatform 0x00003045 start + 53
13 ??? 0x00000005 0x0 + 5
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch