Framstag / libosmscout

Libosmscout is a C++ library for offline map rendering, routing and location lookup based on OpenStreetMap data
Other
259 stars 79 forks source link

C# binding is not working #897

Open OgreTransporter opened 4 years ago

OgreTransporter commented 4 years ago
libosmscout-binding\src\swig\osmscout\libosmscout.i(14): error : Unable to find 'std_unordered_map.i'

std_unordered_map.i and/or std_unordered_set.i are not available for C# (see https://github.com/swig/swig/tree/master/Lib/csharp) These lists are available for Java.

Framstag commented 4 years ago

Hmmm. Likely the SWIG code is also broken currently for Java. We do not have any automatic builds for this, I do not regular test it as long as there is no active user. I also fear, that most people cannot fix it, in case they break them.

I also find SWIG medium helpful and complex. As such I'm also looking for alternatives once in a while. But up to know did not find anything (I heard of something for python in a podcast recently).

As such the above error is a symptom not unknown for me, up to about a year ago there was no support for std::unorderd_XXX for Java in SWIG either.

I look like the most robust thing to do, would be to write C wrapper for the libosmscout C++ code - tailered for use by appications and than use SWIG or handwritten stub code to interface with other languages.

I must admit though, that this would be a huge effort and likely should be do b someone that also writes the other (application) side, to make sure, that the API fits the needs.

I also started writing Java client code directly on the database format (as an experiment to see, how much effort it would and how it would behave performance-wise). But I did not finish this yet.

I suggest to move the discussion to the mailing list.

OgreTransporter commented 4 years ago

Personally, I don't need the C# interface. If I need a function I can write a C wrapper that calls the OSMScout function for me. Alternatively, there is the variant Managed C++ for C#, but I am not a fan of it.

If Java doesn't work either it might make sense to remove SWIG and the interfaces completely. On the other hand, Python is very trendy right now, so it would be interesting to have a Python interface.

A difficult decision.