Previously in this blog I wrote an article about using STK Engine with mono (see here). At that time, mono supported running a purely analytical STK Engine application, but with some limitations. One of the limitations found was the lack of proper support for passing arrays as parameters to the STK Engine methods (i.e. marshalling of COM safearrays between managed and unmanaged code). Since then, I have contributed two patches (r136836 and r149817) to the mono code base that address these issues. The first patch made it into mono 2.6. The second patch just got incorporated last week into the mono trunk, which prompted this update.
In the initial article the second example (“Second console application”) was not working properly under mono. With these two patches it now works correctly (at the head of trunk), both on Windows and Linux. The code for that application is unchanged and was included in the initial article.
Here are the updated outputs, first when running this example under Linux/mono, then Windows/mono and Windows/Microsoft .NET.
Mono on Linux output:
Mono/MS .Net on Windows output:
This is an important step for making it possible to use STK Engine with mono on Linux. However there are still some limitations:
- Events do not work (due to the lack of late binding support in mono).
- The globe and map controls are still an issue. ActiveX controls are not supported. I have an idea about adding this to mono. I have developed an early prototype. However a lot more work is needed before these changes could be incorporated to the mono code base (and, to be honest, that might never happen). As a teaser, here is a video showing a basic Windows Form application with a globe control running under mono on Linux: