Бьюсь уже второй день, но никак не могу подцепить эту библиотеку к проекту под виндой. Пробовал по гайду на их сайте, boost собирается нормально, а вот libtorrent никак не хочет Уже и пробовал просто добавить в INCLUDEPATH путь к бусту и либторренту, но вкончается ошибками компиляции
Прикрутить так и не получилось, решил попробовать написать генерацию .torrent файла сам. Пришел к тому, что все, кроме последнего раздела получается нормально, а вот peaces никак не могу получить.
Ссылки на спецификацию формата:
http://blog.bitcomet.com/bitcomet/post_413/
http://bittorrent.org/beps/bep_0003.html
http://wiki.theory.org/BitTorrentSpecification
То что у меня получилось
testapp.h
#ifndef TESTAPP_H
#define TESTAPP_H
#include <QDialog>
class testApp : public QDialog
{
Q_OBJECT
public:
testApp(QWidget *parent=0);
private slots:
void generate();
};
#endif // TESTAPP_H
#include <QtGui>
#include "testapp.h"
testApp::testApp(QWidget *parent):QDialog(parent)
{
QPushButton *openbtn=new QPushButton("OpenFile");
QPushButton *genbtn=new QPushButton("Generate");
QVBoxLayout *layout=new QVBoxLayout;
layout->addWidget(openbtn);
layout->addWidget(genbtn);
setLayout(layout);
connect(openbtn,SIGNAL(clicked()),this,SLOT(generate()));
}
void testApp::generate()
{
QString announce="http://donald.org.ua/tracker/announce.php";
QString createdby="BitTorrent/6120";
int pieceslength= 256*1024;
QString torrentcontent;
QString fileName = QFileDialog::getOpenFileName(this,tr("Select"),
QApplication::applicationDirPath(),
tr("All Files (*.*)"));
if(fileName.isEmpty())
return;
QFile file(fileName);
QFileInfo fi(file);
if (!file.open(QIODevice::ReadOnly))
return;
QByteArray pieces = file.readAll();
QByteArray tmp;
QCryptographicHash *hash=new QCryptographicHash(QCryptographicHash::Sha1);
for (int i = 0; i < pieces.size(); i += 20){
hash->reset();
hash->addData(pieces.mid(i, 20));
tmp.append(hash->result());
}
//hash->addData(pieces);
torrentcontent = QString("d8:announce%1:%2")
.arg(announce.length()).arg(announce);
torrentcontent.append(QString("10:created by%1:%2")
.arg(createdby.length()).arg(createdby));
torrentcontent.append(QString("13:creation datei%1")
.arg(QDateTime::currentDateTime().currentDateTime().toTime_t()));
torrentcontent.append(QString("e8:encoding5:UTF-84:infod6:lengthi%1e4:name%2:%3")
.arg(file.size()).arg(fi.fileName().length()).arg(fi.fileName()));
torrentcontent.append(QString("12:piece lengthi%1e6:pieces%2:")
.arg(pieceslength).arg(hash->result().length()));
QFile data("output.torrent");
if (data.open(QFile::WriteOnly)) {
QTextStream out(&data);
out << torrentcontent << tmp;
}
data.close();
}
А в примере %QTDIR%\examples\network\torrent ответов нет?
Я же написал, что в примере нет создания торрента
Подниму тему. Библиотеку прикрутил нормально. Проблема в русских символах под виндой. Не создает файлы где в названии или пути присутствуют русские символы.. Уже вертел и кодировкой от Qt и от буста и от самого libtorrent'a, но никак не могу заставить их нормально восприниматься. Ради интереса выкачал qBittorrent под винду, но и там такая же проблема
Интересно то что в линуксе работает все нормально (если стоит локаль UTF-8 ), а тут фиг. Может кто уже сталкивался с таким да сможет подсказать как решить данную проблему?
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)