D on android and d_android

burt invalid_email_address at cab.abc
Tue Apr 7 17:25:49 UTC 2020

On Tuesday, 7 April 2020 at 12:29:57 UTC, Adam D. Ruppe wrote:
> On Tuesday, 7 April 2020 at 11:45:24 UTC, burt wrote:
>> I managed to get it to compile. I had to add __bss_end__ 
>> symbol myself and set the value to the value of the `_end` 
>> symbol or it wouldn't work. A PR to the LDC druntime is wat 
>> caused the __bss_end__ symbol to be missing [0].
> Blargh it was supposed to just work without main() on the new 
> ldc but I only actually ran stuff with 1.19 on actual android.
>> However, when I added a MainActivity class in D using 
>> arsd.jni, the app crashes whenever one of the @Exported 
>> methods is called.
> What does the android studio debugger say about it? Missing 
> method or another link problem?
>> And a callback method for a button in Java called dFunction 
>> with the appropriate parameters. I noticed that the generated 
>> .so file didn't contain a 
>> `Java_com_mypackage_myapplication_MainActivity_dFunction` 
>> symbol. Any help on this would be appreciated.
> Yeah, it uses a private name and registers that in a static 
> module constructor (this allows it to support overloads more 
> easily), so that specific name not being there isn't wrong, but 
> it could be the registration function never got called again.

Error is as follows according to the logs:

java.lang.IllegalStateException: Could not execute method for 
         at [etc.]
Caused by: java.lang.reflect.InvocationTargetException
         at [etc.]
Caused by: java.lang.UnsatisfiedLinkError: No implementation 
found for void 
com.mypackage.myapplication.MainActivity.dFunction(android.widget.TextView, android.widget.TextView, android.widget.TextView) (tried Java_com_mypackage_myapplication_MainActivity_dFunction and Java_com_mypackage_myapplication_MainActivity_dFunction__Landroid_widget_TextView_2Landroid_widget_TextView_2Landroid_widget_TextView_2)
         at [etc.]

So yes, it cannot find the function. How can I check if the 
module constructor is actually run?

More information about the Digitalmars-d-learn mailing list