I’m a back-end developer who wants to play with some desktop/front-end development.
I found a C++ library and started thinking what would be the best way to wrap this library in a way so that I can create a GUI in either C# or in Typescript.
What would you recommend?
Note: I’m trying to keep the question relatively vague because I want to get some ideas to try instead of finding the solution to my specific problem. I want to learn more about how others would approach such a problem. But I can provide more details, if necessary.
Depending on where you want your app to run, QT framework/creator has pretty powerful C++ GUI capabilities. The biggest benefit, I thought, is a lot of open source projects use it (e.g. Bitcoin and forks) meaning there are a lot of real examples out there rather than only docs.
The other option, which is more aligned with separate frontend/backend and WebApps, is simply have a basic server of some type wrapping the dll functionality you want to use as endpoints and communicate over ReST API.
Not an easy task, but if your C++ library is DLL you can use interop to load and use it on C#. If the library is larger than just one DLL, then it goes even harder. https://learn.microsoft.com/en-us/dotnet/framework/interop/consuming-unmanaged-dll-functions
Thank you for the response. To be honest, I’m a bit surprised that this is not an easy task. If I understand the documentation correctly, that means, I will have to create a C# wrapper for C++ methods. I was hoping to get the wrapping for free via some tooling. I found Emscripten that looks promising (for JS), but not sure that’s any different.
Thank you. I saw those pages, but what I can do was not immediately clear. I was looking for some examples (probably there are some videos on YouTube). I will have some more time to dive into this soon. Maybe I’ll hack around and see if it works for me.
There’s also Swig, but it sucks from what I’ve been told.
A very long time ago I did it for C# writing a wrapping C++/CLI library. For other languages I would probably make a C wrapper library