Coup de pouce.Asio comme en-tête uniquement
Je veux utiliser ASIO de la bibliothèque de Boost dans mon projet. Son doc disent que cela peut être d'en-tête uniquement si la regex n'est pas utilisé et SSL n'est pas utilisé. Toutefois, l'exécution de bcp
pour asio
tire très nombreux libraies certains sont avec des sources si besoin de compiler, bjam
etc.
Je peux en quelque sorte utiliser ASIO dans le projet en tant que têtes, sans libs/source? J'ai seulement besoin d'ASIO, pas l'autre partie de Boost.
EDIT: ASIO voulez Boost.System
qui a une lib pour lier cette dépendance peut pas être de sorte que je peux utiliser l'en-tête uniquement ASIO?
Coup de pouce.Asio ne nécessitent reliant à renforcer.Système. Non-boost Asio n'est pas, voir Ralf réponse.
OriginalL'auteur zaharpopov | 2011-02-23
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, vous pouvez obtenir le non-boost version de l'asio de http://think-async.com/Asio/AsioAndBoostAsio
"— Boost.Asio utilise le Boost.Système de bibliothèque pour fournir un soutien pour les codes d'erreur ( boost::system::code_erreur et boost::system::system_error). Asio comprend ces sous son propre espace de noms ( asio::code_erreur et asio::system_error). Le Coup De Pouce.La version du système de ces classes prend actuellement en charge une meilleure extensibilité définies par l'utilisateur les codes d'erreur.
— Asio est d'en-tête de fichier uniquement, et pour la plupart des utilisations ne nécessite pas de liaison à l'encontre de toute bibliothèque Boost. Coup de pouce.Asio nécessite toujours que vous lier avec le coup de pouce.Système de bibliothèque, et aussi contre coup de pouce.Fil si vous voulez lancer des threads à l'aide de boost::thread."
Selon la documentation, la non-boost asio ne nécessite pas de Boost, sauf si vous utilisez la
read_until()
ouasync_read_until()
surcharges qui prennent unboost::regex
paramètre.OriginalL'auteur Ralf
Accepté la réponse est 100% efficace et recommandé, mais une autre option si vous voulez vraiment/besoin d'utiliser Boost Asio est d'essayer de la compilation de votre application avec
-DBOOST_ERROR_CODE_HEADER_ONLY
. L'utilisation de cette macro (documenté ici) doit obtenir autour de la nécessité de lien avec Boost.Système. Cependant, il est intéressant de lire les mises en garde souligné dans cette réponse. En particulier, vous devrez peut-être créer un "crétin" fichier CPP contenant:et de désactiver l'optimisation pour ce fichier n'a. (Personnellement, je n'ai pas besoin de le faire, mais YMMV...)
merci pour les précisions, j'ai édité ma réponse à inclure un lien vers le Boost.Système de docs.
Dans MSVC j'ai aussi besoin de -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB -DBOOST_SYSTEM_NO_LIB. N'a pas besoin d'un mannequin d'un fichier cpp.
Notez que le DBOOST_SYSTEM_NO_DEPRECATED est aussi nécessaire pour que votre programme, vous obtenez vraiment de travailler avec asio en-tête seulement :
-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED
sur la ligne de commande du compilateur.OriginalL'auteur evadeflow
Je pense que bcp tire la bibliothèque regex car il peut être utilisé (et sur les machines Windows, il est utilisé par défaut). J'attends que vous pouvez supprimer de la bibliothèque regex fichiers source pas de problème. Assurez-vous d'ajouter le bon drapeaux du compilateur si vous êtes compilateur sous windows
(
-DBOOST_DATE_TIME_NO_LIB
et-DBOOST_REGEX_NO_LIB
)Les détails sont de cette page (qui, par les sons de celui-ci que vous avez déjà trouvé).
Je ne suis pas sûr de savoir comment intelligente est bcp - je suis ne pense pas que vous pouvez passer à l'définit donné ci-dessus que l'empêcher à la suite de la mscv route.
OriginalL'auteur Tom