2008-10-23 6 views
3

(mingw32, windows xp) Bonjour, J'essaie de migrer de Java vers C++. Je suis confus et frustré de trouver, d'installer et de compiler des bibliothèques C++ non standard. en Java, c'est tellement pratique qu'ils ont bourré toutes les fonctionnalités et la documentation dont ils ont besoin dans l'API standard de java. Existe-t-il une liste de bibliothèques C++ essentielles telles que Threading, gui, réseau, image \ traitement audio, xml, etcetc. dans un endroit? ou éventuellement, offert en un seul paquet?CONFUSED - C++ Bibliothèque tierce partie, nouvelle version de C++

J'ai essayé d'installer la bibliothèque QT pendant des semaines et il ne sera même pas compilé. En Java, j'ai appris par tâtonnement à apprendre de nouveaux aspects de la fonctionnalité, mais ce serait impossible si je ne pouvais pas aller chercher de nouvelles API en premier lieu. S'il vous plaît, j'ai besoin de votre suggestion, à l'origine je voulais me libérer de l'abstraction de Java, mais maintenant je veux juste être en mesure d'utiliser C++ avant de me décider à me tirer une balle dans la tête.

Répondre

2

La bibliothèque standard C++ est extrêmement légère. Il ne contient nulle part les fonctionnalités offertes par les runtimes Java ou par le .NET CLR.

Les bibliothèques Boost ajoutent tout un tas de fonctionnalités à C++, mais pas beaucoup (le cas échéant) dans le domaine de l'interface utilisateur.

Pour l'interface utilisateur, il y a la question de la plate-forme que vous ciblez. Si c'est Win32, alors vous pouvez utiliser l'API Win32 droite (principalement conçue pour C, mais il y a des wrappers C++ pour certaines parties). Si vous voulez multiplate-forme, alors vous regardez QT ou GTK (bien qu'il y en ait d'autres). Mais, comme Andrew l'a déjà dit: "Pourquoi voulez-vous apprendre le C++ de toute façon?". Ne vous méprenez pas: je programme en C++ pour gagner ma vie, et je l'apprécie (même si je commence à soupçonner un cas de syndrome de Stockholm). Si je devais recommencer, j'irais avec un langage et un environnement plus moderne (Java ou C#, ou Ruby ou Python).

+0

Vous avez tort sur le manque de librairies de mise en réseau en boost: boost :: asio. Ce n'est pas encore une sorte d'abstraction d'Apache HttpClient, mais c'est beaucoup mieux et beaucoup plus portable que les douilles ordinaires. – macbirdie

+0

Cool. Je ne le savais pas. Mise à jour ma réponse –

+0

C'est une bonne réponse, mais seulement quand il arrive au point où il peut l'utiliser. À l'heure actuelle, je soupçonne que cela ne ferait que le rendre plus confus. –

0

Threading, XML, mise en réseau, une certaine génération d'image, le codage et le traitement - boost fournit ces. En ce qui concerne XML, il y a par exemple Arabica - il extrait les bibliothèques spécifiques à la plate-forme en les enveloppant d'un agréable parfum C++ standard.

La partie GUI est un problème différent. Il y a Qt, wxWidgets, gtk avec les bindings C++ (gtkmm), les bibliothèques natives pour chaque plate-forme et leurs wrappers C++ (WTL est une excellente bibliothèque pour Win32), mais le standard C++ évolué et boost devient partie intégrante de la norme (C++ 0x arrive bientôt), il n'y a pas de frameworks GUI qui tirent parti de ces fonctionnalités standard et introduisent les leurs à la place. Ils font très bien leur travail.

+0

Comme pour la réponse de Roger, cela lui serait utile plus tard, mais pas à ce stade. –

1

Mon conseil serait: prenez une étape à la fois.

Commencez par comprendre comment inclure une bibliothèque pré-compilée dans votre code. Je recommande de commencer par ZLib (il a un design très facile à utiliser et c'est aussi un outil utile). Une fois que la bibliothèque pré-compilée fonctionne, supprimez-la et essayez de compiler ZLib à partir du code source. Demandez sur Stack Overflow si vous avez besoin d'aide à tout moment, nous allons vous aider à le faire. Au moment où vous travaillerez, vous devriez avoir toutes les connaissances dont vous avez besoin pour compiler et installer Qt.

Questions connexes