Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 13.12.2015, 11:00   #1
Threetor
Новичок
Джуниор
 
Регистрация: 13.12.2015
Сообщений: 8
По умолчанию create_task в clr проекте

Привет. Я новичок в VisualStudio и Visual c++. Я пытаюсь использвовать функцию Concurrency::create_task в своём MFC проекте.

Я создал простой clr проект с пустой формой. Создал отдельный класс для работы с тасками. Этот новый класс с тасками настроил как Common Language Runtime Support в No Common Language RunTime Support чтобы мог использовать ppltasks.h.

Класс testtest.h

Код:
#pragma once
class testtest
{
public:
    testtest();
};
и testtest.cpp:

Код:
#include "testtest.h"
#include <ppltasks.h>

using namespace Concurrency;

testtest::testtest()
{
    auto task1 = create_task([]() -> int
    {
        return 42;
    });
}
Когда я запускаю приложение, оно выдаёт ошибку сразу после запуска (компиляция проходит успешно). При этом я даже не создаю класс testtest.

Код:
Program: C:\projects\c\Project1\Debug\Project1.exe
File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line: 1037

Expression: _CrtIsValidHeapPointer(block)
Этот же класс работает если я создаю win32 console project.

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

Есть предложения? Могу залить исходник если нужно (в исходниках только пустая форма и этот класс).
Threetor вне форума Ответить с цитированием
Старый 13.12.2015, 11:31   #2
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

Зачем вам CLR (.NET) в MFC проекте?

Либо пишите на чистом С++ с С++ библиотеками, либо берите C# если .NET хотите.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2015, 11:51   #3
Threetor
Новичок
Джуниор
 
Регистрация: 13.12.2015
Сообщений: 8
По умолчанию

То есть проблема в корне? Я пока ещё далёк от всех этих тонкостей. Просто выбрал с++ так как раньше на нём писал. Дальше нашел туторил по созданию оконного риложения в visualstudio, там использовали такую связку. Видимо влез я совсем не туда куда надо.
Что можете посоветовать по созданию оконного приложения для старых компьютеров(скорее всего все на XP), с возможностью подключения к серверу и работой с базой данных? При этом не теряя кучу времени на создание интерфейса (как всегда проект нужно сдавать "вчера")?
Сейчас главное скорость разработки, оптимизация и скорость вообще не важны, а со стабильностью разберёмся потом.
Боюсь что C# начнёт требовать всякие фреймворки которые могут оказаться несовместимыми с системами клиентов. А в с++ боюсь что убью кучу времени только на интерфейс.

Ну а ещё лучше бы просто убрать текущий подводный камень и закончить проект как есть.
Спасибо.
Threetor вне форума Ответить с цитированием
Старый 13.12.2015, 12:17   #4
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

Цитата:
Что можете посоветовать по созданию оконного приложения
Ну если С++, то Qt.
Там и документация хорошая (англ).

Можно даже в VS подключить Qt (+у них есть add-in для некоторой интеграции типа шаблонов проектов и открытия Qt Designer для .ui файлов), но наверно проще будет взять Qt Creator.
Цитата:
для старых компьютеров(скорее всего все на XP)
В последних версиях Qt (>=5.3) вроде ХР не поддерживается если не пересобрать самому из исходников, так что скорее всего лучше взять Qt 5.2.

В новых Visual Studio кстати тоже с настройками компиляции по умолчанию не запустится на ХР.


Цитата:
Ну а ещё лучше бы просто убрать текущий подводный камень
Какой именно? Если боитесь что "начнёт требовать всякие фреймворки", то CLR (==.NET) включать нельзя.
(но вообще на XP SP3 поддерживается .NET 4.0 и вроде даже он ставится автоматически если не отключать обновления винды)

Последний раз редактировалось Alex11223; 13.12.2015 в 12:20.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2015, 12:32   #5
Threetor
Новичок
Джуниор
 
Регистрация: 13.12.2015
Сообщений: 8
По умолчанию

Спасибо за разъяснения.

На чем разработка будет быстрее? На C# или на C++ QT?

Поставить .NET клиентам не проблема. Проблема будет если .NET будет несовместим допустим с XP sp1. Такое возможно? Если такое возможно, то остаётся только QT.
Threetor вне форума Ответить с цитированием
Старый 13.12.2015, 12:38   #6
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

Зависит от задачи и опыта. В C# сложнее прострелить себе ногу всякими низкоуровневыми вещами доступными в С++.

В SP1 .NET 3.0 можно, 3.5-4.0 вроде нет. (в нем кстати нет Task'ов из кода выше)
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2015, 15:03   #7
Threetor
Новичок
Джуниор
 
Регистрация: 13.12.2015
Сообщений: 8
По умолчанию

Спасибо!

Попытаюсь сначала на c# сделать.
Threetor вне форума Ответить с цитированием
Старый 13.12.2015, 15:26   #8
Threetor
Новичок
Джуниор
 
Регистрация: 13.12.2015
Сообщений: 8
По умолчанию

Таак, XP SP1 не поддерживает вообще никакой .NET (2, 3, 3.5). Все требуют SP2.

Видимо буду использовать QT 5.2, спасибо за наводку.
Threetor вне форума Ответить с цитированием
Старый 13.12.2015, 15:39   #9
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

2.0 вроде должно поддерживать https://msdn.microsoft.com/en-us/lib...8VS.80%29.aspx.
Оно ж и на всяких 98 работает.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2015, 15:47   #10
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,413
По умолчанию

а что, много клиентов с XP SP1? я думал уже само ХР вымерло или вот вот
come-on вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenMP и CLR ; /openpm /MTd /clr хочу все и сразу )) kic2512 Visual C++ 0 10.02.2013 22:44
Ассемблер в CLR kamilton Visual C++ 1 03.05.2011 13:58
Браузер в CLR) Asdprom Общие вопросы C/C++ 0 10.04.2011 13:14
C++/CLR dampirik Общие вопросы .NET 3 19.11.2009 14:26
Visual c++ clr dampirik Общие вопросы .NET 1 27.08.2009 23:24


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS