2015-09-12 89 views
0

我使用Windows 8.1,visual studio社區2013.
我下載了boost 1.59。
然後我打開Developer Command Prompt for VS2013,運行bootstrap.bat,然後運行b2.exe。

所有.lib文件都放在./stage/lib/之下。

我設置了C++包含路徑和鏈接器路徑。我成功構建了我的程序並在調試模式下運行。
以下是錯誤消息我得到:如何在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. 

這裏是斷點:

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

任何人知道如何解決這個問題?
另一個問題,是否有任何.dll文件生成的這個版本,我在哪裏可以找到它們?

這裏是我的程序:
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

升壓安裝就好了。異常意味着某些系統函數返回錯誤。告訴我們例外的消息,也許我們可以解決它。 –

+0

我在哪裏可以找到例外消息?在彈出的窗口中彈出了BoostStation.exe中的0x77394598處的未處理異常:Microsoft C++異常:boost :: exception_detail :: clone_impl >在內存位置0x001BFD74 。' – sflee

回答

1

你提升安裝就可以了,因爲很明顯,你可以編譯和鏈接程序,拋出一個boost::exception

通過將代碼包裝在try/catch塊中來捕捉異常,然後打印出消息。我改變了你main相應功能全:

#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; 
} 

這將趕上由升壓拋出的異常和程序退出前打印的消息。

你也應該上一般例外讀了起來:http://www.cplusplus.com/doc/tutorial/exceptions/

+0

謝謝,我可以看到問題是由send_to函數引起的。 ^^ – sflee