Archived
This forum has been archived. Please start a new discussion on GitHub.
Ice on Mono on Android
in Help Center
Hello,
there is my problem :
We have developped an application using Mono. The desktop version works perfectly well. However, when we ported it on Android, we had some problems.
Most of the application and Ice functionnalities are working. But whenever we try to send 'float' or 'double' using Ice, it fails. There is the error message at runtime :
This very same function works perfectly well on desktop platforms.
Also, we're still using Ice 3.4.1. Could it be related?
there is my problem :
We have developped an application using Mono. The desktop version works perfectly well. However, when we ported it on Android, we had some problems.
Most of the application and Ice functionnalities are working. But whenever we try to send 'float' or 'double' using Ice, it fails. There is the error message at runtime :
NullReferenceException: Object reference not set to an instance of an object at IceInternal.ByteBuffer.putFloat (Single val) [0x00000] in <filename unknown>:0 at IceInternal.BasicStream.writeFloat (Single v) [0x00000] in <filename unknown>:0 at Module.ItfEventsPrxHelper.begin_sendfunction (Single f, System.Collections.Generic.Dictionary`2 ctx__, Boolean explicitContext__, Ice.AsyncCallback cb__, System.Object cookie__) [0x00000] in <filename unknown>:0 at Module.ItfEventsPrxHelper.begin_sendfunction (Single f) [0x00000] in <filename unknown>:0 at MyClass.MyFunction(float f) [0x00000] in <filename unknown>:0
This very same function works perfectly well on desktop platforms.
Also, we're still using Ice 3.4.1. Could it be related?
0
Comments
-
Hi Alan,
Welcome to the forum.
Did you compile the Ice assembly with MANAGED=yes?
Regards,
Mark0 -
Hello Alan,
Looking at the code for IceInternal.ByteBuffer.putFloat, it's most likely a managed vs unmanaged code issue.
The Ice DLL included in our binary distribution incorporates some unmanaged code, and it looks like it does not work with Mono for Android. You should build your own managed Ice DLL, as described in the INSTALL.MONO included in the Ice source distribution.
Best regards,
Bernard0 -
Hello,
You were right. After we built our own Ice DLL, with the option MANAGED = yes, our Android application started working.
Thanks a lot,
Alan0