Jump to content
  • Advertisement
Sign in to follow this  
methinks

Good cross-platform library?

This topic is 4159 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Does anybody know of a good library that I can use for doing cross-platform development? I'm looking for functions such as threading, plugin management, cross-platform type definitions, safe file handling (automatically dealing with big/small endian systems), message and error handling, xml parsing... I'm looking for something in the style of stl or boost, where you can call just the functions that you need, rather than a SDL style library, where you actually have to load the entire system before you can access parts of it.

Share this post


Link to post
Share on other sites
Advertisement
Java + its OpenGL bindings.

It can be done in C++, Boost helps a lot. But expect to spend majority of your time testing on n platforms - in C++ you'll never have any kind of guarantee for anything. Not even standard compliance.

Share this post


Link to post
Share on other sites
I'm sorry, I should have specified, I'm using c++.

This will be a media editor, initially developed for linux and windows (hopefully with a port to mac soon after). It is a plugin based architecture, meaning that any actual functionality gets loaded in at run time. I'll add graphics later using SDL/OpenGL, but right now I'm just working on the core structure (host) of the system, which includes the plugin manager, system communication, data and file management, error handling... you get the idea.

Share this post


Link to post
Share on other sites
Let's see. I'll throw a bunch of names out there: WxWidgets, FLTK, Qt, GTK. Of those, I like FLTK and Qt the best for maturity and usability. Qt is a lot funkier than FLTK; it's sort of their way or the highway.

Honestly, though? Not one of those libraries is anywhere near as usable or complete as the Java runtime. Just offhand, looking at your list of requirements, I can think of Java's explicit support for handling (automatically, in many cases) each of them. If you really are planning on a significant development effort, you owe itself to consider learning and using Java for this. I can guarantee you'll be pleased with the results.

Share this post


Link to post
Share on other sites
Quote:
Original post by methinks
I'm sorry, I should have specified, I'm using c++.

This will be a media editor, initially developed for linux and windows (hopefully with a port to mac soon after). It is a plugin based architecture, meaning that any actual functionality gets loaded in at run time. I'll add graphics later using SDL/OpenGL, but right now I'm just working on the core structure (host) of the system, which includes the plugin manager, system communication, data and file management, error handling... you get the idea.


You have little fear of what cross-platform media editing means. If it's image editing, you'll only struggle. If it's video - you're in hell.

Eclipse SDK with Java Media SDK is what you want. Eclipse offers one of the very best plug-in architectures that will, if you plug it into hardware, clean windows and cook coffee.

Java Media SDK isn't best, but it offers solid cross-platform support for anything media-related. Even there, platform compatibility issues exist, let alone DRM mess. There's plenty of full-media conferencing and other solutions based on that API. Under Windows it should have full DX and DirectShow support (obviously not portable).

No, C++ is a waste of time and effort - cross-platform media handling is hell. I know I said it twice, but it really is. Unless you have a huge experienced team behind you, you're looking in decade long projects. Even simple ones (... remind me, that media player for Linux which uses some Windows codec ports) use externally provided libraries and various hacks around existing codecs, since everything is so complicated.

Share this post


Link to post
Share on other sites
Use boost, they cover most of what you need.

*edit* I did not see the other replies above. I should have had this browser tab set to auto update... Anyway, boost will not help with media editing.

Share this post


Link to post
Share on other sites
There is also Mono, though you may need to learn C#.

Honestly, if you want to stick with C++ you'll have to look for specialized libraries for pretty much anything you may want to do and put them together into your application yourself, there is no silver bullet there.

Share this post


Link to post
Share on other sites
Quote:
Original post by Kwizatz
Honestly, if you want to stick with C++ you'll have to look for specialized libraries for pretty much anything you may want to do and put them together into your application yourself, there is no silver bullet there.


Yeah, I realize that, and I'm ready to do that (I've already got a descent start on my own cross-platform library), I just wanted to check that I wasn't just duplicating an existing (and probably superior) library. Thanks though!

Share this post


Link to post
Share on other sites
Qt comes pretty close to being a silver bullet. Along with all the GUI stuff, it also comes with thread support, thread-aware containers, file support, easy event handling (also thread-aware), automatically-generated meta information for classes (like, get the class name as a string at runtime), script bindings, an OpenGL context, image format support, etc etc.

If you really must use C++ then I highly recommend Qt, it makes life in C++ less painful. If you have a choice in languages then I agree with the guys that recommended Java.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!