On 2012-07-25 19:35, Johannes Pfau wrote:
* Android doesn't officially support native executables. I'm not sure where this statement is hidden, but it is an official statement. For example their linker is broken when accessing a global variable from a native application in a specific way. Just to emphasize how bad this really is: If you want to access stdout (the C global variable) which is used in writeln for example, you have to use hacks and dladdr to load the address of stdout. You can't simply declare it as external. So you can't actually write a hello world native exacutalbe with D for Android. The Android devs don't care about those issues, as native executables are not supported anyway. But you wouldn't want to use native executables anyway. For example native executables have no possibility to draw a GUI. There's just no way to access the required window handle from a native executable. Instead the supported way to write a "Native Application" is to write a Java stub which loads a shared .so library and calls functions of that library. With recent versions of Android/NDK you don't have to write that stub yourself, it's included in the "NativeApplication" but it still works the same way: Java code loads a .so library. Which leads to the next problem:
I just have to say, that is so wrong on so many levels. -- /Jacob Carlborg