powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt QtConcurrent: Map-Reduce
11 сообщений из 11, страница 1 из 1
Qt QtConcurrent: Map-Reduce
    #40011056
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Откуда: https://doc.qt.io/qt-5/qtconcurrentmap.html#concurrent-map-reduce

Инструменты: MS VS 2017 + Qt Open Source.

Всем привет.
Пытаюсь собрать простейший пример распараллеливания обработки последовательности, при сборке получаю ошибку

1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QtConcurrent::ThreadEngineBase::ThreadEngineBase(void)" (__imp_??0ThreadEngineBase@QtConcurrent@@QAE@XZ) referenced in function "public: __thiscall QtConcurrent::IterateKernel<struct t_procElem const *,class QVector<class QVector<int> > >::IterateKernel<struct t_procElem const *,class QVector<class QVector<int> > >(struct t_procElem const *,struct t_procElem const *)" (??0?$IterateKernel@PBUt_procElem@@V?$QVector@V?$QVector@H@@@@@QtConcurrent@@QAE@PBUt_procElem@@0@Z)
...

Гугление привело к необходимости добавить в .pro файл строчку

QT += concurrent

---
Вопрос: где эта опция в свойствах проекта солюшена MS VS?
Спасибо.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011059
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
добавить в .pro файл строчку

QT += concurrent

---
Вопрос: где эта опция в свойствах проекта солюшена MS VS?

Нашел:

Модератор: Тема перенесена из форума "Delphi".
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011145
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ого, я эту тему у дельфинов повесил? ...поздняя ночь.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011221
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дай нам твой исходник.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011245
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

там такой "пример", без бутылки никак... если интересно, могу рассказать теорию (применительно к Qt) с упрощенным придуманным примером...
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011254
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет нет. Ничего эпистолярного не надо.

Только исходник. Или можно макет который просто создает эту-же ошибку.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011262
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Исходник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
#include <QtCore/QCoreApplication>
#include <QtConcurrent/QtConcurrent>

auto const c_arrDim = 3;

using t_my_array = QVector<QVector <int>>; 

struct t_proc_elem
{
	int x;
	int y;
	int val;
	int trnval;
};
using t_proc_array = QVector<t_proc_elem>;

void init_src_array(t_my_array& a_arr)
{
	QRandomGenerator rg(QRandomGenerator::securelySeeded().generate());
	a_arr.resize(c_arrDim);
	for (auto i = 0; i < c_arrDim; i++) {
		a_arr[i].resize(c_arrDim);
		for (auto j = 0; j < c_arrDim; j++)
			//a_arr[i][j] = rg.generate();
			a_arr[i][j] = i * c_arrDim + j;
	};
};


void init_trg_array(t_my_array& a_arr)
{
	a_arr.resize(c_arrDim);
	for (auto& line : a_arr)
		line.resize(c_arrDim);

};

void init_proc_array(t_proc_array& a_proc_arr, const t_my_array& a_src_arr)
{
	a_proc_arr.resize(c_arrDim * c_arrDim);
	for (auto i = 0; i < c_arrDim; i++)
		for (auto j = 0; j < c_arrDim; j++)
		{
			a_proc_arr[i*c_arrDim + j].x = i;
			a_proc_arr[i*c_arrDim + j].y = j;
			a_proc_arr[i*c_arrDim + j].val = a_src_arr[i][j];
			a_proc_arr[i*c_arrDim + j].trnval = a_src_arr[j][i];
		}
};
t_proc_elem my_map(const t_proc_elem & a_elem)
{
	t_proc_elem localVal = a_elem;
	localVal.val  += a_elem.trnval / 2;
	return  localVal;
}

void my_reduce(t_my_array& a_result_arr, const t_proc_elem & a_proc_elem		)
{
	if (a_result_arr.size() == 0)
		init_trg_array(a_result_arr);
	a_result_arr[a_proc_elem.x][a_proc_elem.y] = a_proc_elem.val;
}


int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);

	t_my_array srcArr;
	init_src_array(srcArr);
	qDebug() << endl << "Src array:" << endl << srcArr;


	t_proc_array procArr;
	init_proc_array(procArr, srcArr);


	qDebug() << "Prcessed array:";
	for (auto & elem : procArr)
		qDebug() <<  elem.x << " " << elem.y << " " << elem.val << " " << elem.trnval;


	t_my_array trg_arr = QtConcurrent::blockingMappedReduced(procArr, my_map, my_reduce);

	qDebug() << endl << "Trg array:" << endl << trg_arr;


	return a.exec();
}




PS: "ошибка" исправлена, см. второе мое сообщение.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011281
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
макет который просто создает эту-же ошибку.

Для повторения достаточно в .pro - файле проекта убрать значение concurrent из переменной QT

QT += core gui concurrent

Или, для проекта MS VS, в свойствах проекта, в разделе Qt project settings -> General -> Qt modules - также убрать concurrent . Не забыть вызвать qmake! (ребилд проекта).
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40011287
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

>error LNK2019: unresolved external symbol
Значит h файл от либы есть. А самой либы so/dll нет.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40016374
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
О
Гугление привело к необходимости добавить в .pro файл строчку

QT += concurrent

---
Вопрос: где эта опция в свойствах проекта солюшена MS VS?
Спасибо.


В .pro файле оно и должно быть.
Солюшны vc генерируются по нему.
...
Рейтинг: 0 / 0
Qt QtConcurrent: Map-Reduce
    #40016425
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Солюшны vc генерируются по нему.

С фига ли?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt QtConcurrent: Map-Reduce
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]