2015-09-12 2 views
0

J'utilise Windows 8.1, Visual Studio communauté 2013.
J'ai téléchargé boost 1.59. Puis j'ouvre Developer Command Prompt for VS2013, lance bootstrap.bat, puis lance b2.exe.

Tous les fichiers .lib sont placés sous ./stage/lib/.

Je définis le chemin d'inclusion C++ et le chemin de l'éditeur de liens. J'ai construit mon programme avec succès et exécuté en mode debug.
Voici le message d'erreur que je reçois:Comment installer boost sur Windows

Unhandled exception at 0x77394598 in BoostStation.exe: Microsoft C++ exception: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> > at memory location 0x001BFD74. 

est ici le point de rupture:

throw enable_current_exception(enable_error_info(e)); // from throw_exception.hpp 

Tout le monde sait comment résoudre le problème?
Une autre question, y at-il des fichiers .dll générés par cette version et où puis-je les trouver?

Voici mon programme:
MulticastSender.h

#include <boost/asio.hpp> 
#include <boost/scoped_ptr.hpp> 
#include <string> 

class MulticastSender 
{ 
public: 
    MulticastSender(const boost::asio::ip::address& multicast_addr, const unsigned short multicast_port) 
     : ep_(multicast_addr, multicast_port) 
    { 
     socket_.reset(new boost::asio::ip::udp::socket(svc_, ep_.protocol())); 
    } 

    ~MulticastSender() 
    { 
     socket_.reset(NULL); 
    } 

public: 
    void send_data(const std::string& msg) 
    { 
     socket_->send_to(boost::asio::buffer(msg), ep_); 
    } 

private: 
    boost::asio::ip::udp::endpoint     ep_; 
    boost::scoped_ptr<boost::asio::ip::udp::socket> socket_; 
    boost::asio::io_service       svc_; 
}; 

main.cpp

#include "stdafx.h" 
#include "MulticastSender.h" 


int _tmain(int argc, _TCHAR* argv[]) 
{ 
    boost::asio::ip::address multiCastGroup; 
    multiCastGroup.from_string("192.168.32.1"); 
    MulticastSender outDoor(multiCastGroup, 6000); 

    while (true) 
    { 
     outDoor.send_data("Hello"); 
     Sleep(1000); 
    } 

    return 0; 
} 
+2

L'installation de Boost est très bien. L'exception signifie que certaines fonctions du système ont renvoyé une erreur. Dites-nous le message de l'exception et peut-être que nous pouvons le résoudre. –

+0

Où puis-je trouver le message de l'exception? J'ai une fenêtre pop-up avec 'exception non gérée à 0x77394598 dans BoostStation.exe: exception Microsoft C++: boost :: exception_detail :: clone_impl > à l'emplacement de mémoire 0x001BFD74 .' – sflee

Répondre

1

Votre installation de boost est ok, parce que vous êtes évidemment en mesure de compiler et lier un programme jette un boost::exception.

Attrapez l'exception en enveloppant votre code dans un bloc try/catch, puis imprimez le message. J'ai changé votre main -fonction en conséquence:

#include "stdafx.h" 
#include "MulticastSender.h" 
#include "boost/exception.hpp" 
#include <iostream> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    try 
    { 
     boost::asio::ip::address multiCastGroup; 
     multiCastGroup.from_string("192.168.32.1"); 
     MulticastSender outDoor(multiCastGroup, 6000); 

     while (true) 
     { 
      outDoor.send_data("Hello"); 
      Sleep(1000); 
     } 
    } 
    catch (const std::exception& e) 
    { 
     std::cout << boost::diagnostic_information(e) << std::endl; 
    } 
    return 0; 
} 

Cela attirera l'exception qui est levée par coup de fouet et imprimer son message avant la fin du programme.

Vous devriez également lire sur des exceptions en général: http://www.cplusplus.com/doc/tutorial/exceptions/

+0

Merci, je peux voir que le problème est causé par la fonction send_to. ^^ – sflee