带控制台应用程序的WxWidgets(libtorrent)

时间:2011-11-25 18:22:47

标签: c++ wxwidgets codeblocks

使用控制台应用程序使用libtorrent下载torrent是很好的,但在WxWidgets中,程序只会挂起并且什么都不做。

#include "main.h"

#include <iostream>
#include <fstream>
#include <iterator>
#include <exception>

#include <string>
#include <sstream>

#include "libtorrent/entry.hpp"
#include "libtorrent/bencode.hpp"
#include "libtorrent/session.hpp"

int torrentDownloadOld(char* torrentURL)
{
    using namespace libtorrent;
#if BOOST_VERSION < 103400
    namespace fs = boost::filesystem;
    fs::path::default_name_check(fs::no_check);
#endif

#ifndef BOOST_NO_EXCEPTIONS
    try
#endif
    {
        session s;
        s.listen_on(std::make_pair(6881, 6889));
        add_torrent_params p;
        p.save_path = "/home/fulluser/Documents/gfx/bin/Debug/";
        p.ti = new torrent_info(torrentURL);
        s.add_torrent(p);

        // wait for the user to end
        //char a;
        //std::cin.unsetf(std::ios_base::skipws);
        //std::cin >> a;
    }
#ifndef BOOST_NO_EXCEPTIONS
    catch (std::exception& e)
    {
        wxString mystring2(e.what(), wxConvUTF8);
        wxMessageBox(mystring2, _("Error"));
    }
#endif
    return 0;
}

我将catch从原始std::cout << e.what() << "\n";更改为消息框,并注释了等待用户输入。

我在WxWidgets按下按钮时调用torrentDownloadOld(),但没有任何反应..没有下载torrent,GU​​I也没有响应。大约15秒后,GUI再次响应,弹出“欢迎”消息框,但文件无处可寻。下载甚至从未开始。

void gfxDialog::OnAbout(wxCommandEvent &event)
{

    std::string torrentURL = "/home/fulluser/Documents/gfx/bin/Debug/test.torrent";
    torrentDownloadOld((char*)torrentURL.c_str());

        //Show welcome to message box when torrent is done.
    wxString msg = wxbuildinfo(long_f);
    wxMessageBox(msg, _("Welcome to..."));
}

没有任何内容正在输出给用户,所以我不明白为什么在程序没有响应的情况下没有下载文件。

0 个答案:

没有答案