Home Help Center

Ice on Mono on Android

AlanRAlanR Member Alan RaynaudOrganization: Egidium TechnologiesProject: Integrated Security Automation Platform
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 :
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?

Comments

  • mesmes CaliforniaAdministrators, ZeroC Staff Mark SpruiellOrganization: ZeroC, Inc.Project: Ice Developer ZeroC Staff
    Hi Alan,

    Welcome to the forum.

    Did you compile the Ice assembly with MANAGED=yes?

    Regards,
    Mark
  • bernardbernard Jupiter, FLAdministrators, ZeroC Staff Bernard NormierOrganization: ZeroC, Inc.Project: Ice ZeroC Staff
    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,
    Bernard
  • AlanRAlanR Member Alan RaynaudOrganization: Egidium TechnologiesProject: Integrated Security Automation Platform
    Hello,

    You were right. After we built our own Ice DLL, with the option MANAGED = yes, our Android application started working.

    Thanks a lot,
    Alan
Sign In or Register to comment.