Russian Qt Forum
Май 02, 2024, 21:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 7
1  Qt / Вопросы новичков / VS2019 .sln to QTCreator .pro : Октябрь 28, 2022, 18:56
Добрый день, возможно ли обратное преобразование(открытие) проекта VS2019(*.sln) в проект QR Creator(.pro)?
.pro к .sln знаю как,интересует именно обратное преобразование
2  Qt / Вопросы новичков / Re: Ошибка с декларированием собственного класса : Октябрь 14, 2022, 18:02
Цитировать
Чтоб с кастомным классом мог работать QVarian
не все так однозначно, если написать просто вот так:
Код:
class BaseMyClass
{
public:
    BaseMyClass(){};
    virtual ~BaseMyClass(){};
    virtual int getID() = 0;
private:
    int id = 0;
};

class MyClass : public BaseMyClass
{
public:
    MyClass() = default;


    virtual ~MyClass() = default;
    void setValue(int newValue)
    {
        std::thread::id h = std::this_thread::get_id();
        value = newValue;
    }
    int getID() {return 1;}
private:
    int value = 0;
};
Q_DECLARE_METATYPE(MyClass)
заметь , тут этой функции нет и все работает и декларируется, но я работаю с легаси кодом, там внутри класса много различных операторов переопределенных и конструкторов, вот я и спрашиваю,что именно может повлиять на ОБЯЗАТЕЛЬНОЕ наличие этого конструктора, получается если что-то(что конкретно я не знаю) определено внутри класса,тогда и этот конструктор должен быть ОБЯЗАТЕЛЬНО для декларирования,обычный код с конструктором и деструктором декларируется без конструктора копирования
3  Qt / Вопросы новичков / Re: Ошибка с декларированием собственного класса : Октябрь 14, 2022, 13:47
Нет, проблема естественно была не с точкой запятой, почему то для декларирования типа требуется метод:

Код:
MyClass (const MyClass & other){}

добавляю его и все нормально,убираю его и ошибка,кто-то может знает зачем этот метод при декларировании?
4  Qt / Вопросы новичков / Ошибка с декларированием собственного класса : Октябрь 13, 2022, 18:24
Всем привет, не могу понять в чем ошибка с  Q_DECLARE_METATYPE:
Код:
namespace MyNamespace {
class MyClass : public AbstractMyClass
{
 
}
}
Q_DECLARE_METATYPE(MyNamespace::MyClass)

получаю такую ошибку,что не так?
Severity   Code   Description   Project   File   Line   Suppression State
Error   C2280   'MyNamespace::MyClass::MyClass(const MyNamespace::MyClass&)': attempting to reference a deleted function   BksMtRisk   C:\qt2\5.15.2\msvc2019_64\include\QtCore\qmetatype.h   825   

5  Qt / Вопросы новичков / Не могу собрать проект с quickfix.lib : Май 26, 2021, 19:04
Добрый день, не могу собрать проект, подключаю библиотеку quickfix к своему проекту, указал путь до lib и саму quickfix.lib, а так же пути до include= все собирается нормально. Но стоит мне использовать объект этой библиотеки, сразу же вылезают ошибки:
Severity Code Description Project File Line Suppression State
Error LNK2038 mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in FIXExchangeAPI.obj SampleGateway C:\...\quickfix.lib(Dictionary.obj) 1


Собираю в VisualStudio2019
читал в интернете,что нужно менять параметр RuntimeLibrary менял на любой из четырх , проблема остается.
Что делать?Как исправить?
Спасибо
6  Qt / Вопросы новичков / Re: Создание dmp-файла для Сервиса : Апрель 02, 2021, 17:54
Вопрос:
Я внутри класса WinService  при старте создаю объект и помещаю его внутри другого потока. Методом тыка, добавив код, который приведен в самом начале в именно в мой объект, а не в main, я увидел падение и создание dmp файла, разъясните пожалуйста, кто знает, если бы был тот же поток, то можно было бы добавлять и в main?Как это вообще работает
7  Qt / Вопросы новичков / Создание dmp-файла для Сервиса : Апрель 02, 2021, 15:56
Добрый день. Задавал раньше вопрос по поводу создания дамп файла тут, мне успешно помогли, за что всем причастным огромное спасибо. Но сейчас у меня имеется сервис, который стартует и останавливается через таск менеджер.Вот пример кода main:

Код:
#include <Dbghelp.h>
#include <tchar.h>

#define __CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW

typedef BOOL(WINAPI* MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, HANDLE hFile, MINIDUMP_TYPE DumpType, CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);




void make_minidump(EXCEPTION_POINTERS* e)
{
    auto hDbgHelp = LoadLibraryA("dbghelp");
    if (hDbgHelp == nullptr)
        return;
    auto pMiniDumpWriteDump = (decltype(&MiniDumpWriteDump))GetProcAddress(hDbgHelp, "MiniDumpWriteDump");
    if (pMiniDumpWriteDump == nullptr)
        return;

    char name[MAX_PATH];
    {
        auto nameEnd = name + GetModuleFileNameA(GetModuleHandleA(0), name, MAX_PATH);
        SYSTEMTIME t;
        GetSystemTime(&t);
        wsprintfA(nameEnd - strlen(".exe"),
            "_%4d%02d%02d_%02d%02d%02d.dmp",
            t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond);
    }

    auto hFile = CreateFileA(name, GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    if (hFile == INVALID_HANDLE_VALUE)
        return;

    MINIDUMP_EXCEPTION_INFORMATION exceptionInfo;
    exceptionInfo.ThreadId = GetCurrentThreadId();
    exceptionInfo.ExceptionPointers = e;
    exceptionInfo.ClientPointers = FALSE;

    auto dumped = pMiniDumpWriteDump(
        GetCurrentProcess(),
        GetCurrentProcessId(),
        hFile,
        MINIDUMP_TYPE(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory),
        e ? &exceptionInfo : nullptr,
        nullptr,
        nullptr);

    CloseHandle(hFile);

    return;
}

LONG CALLBACK unhandled_handler(EXCEPTION_POINTERS* e)
{
    make_minidump(e);
    return EXCEPTION_CONTINUE_SEARCH;
}


int main(int argc, char *argv[])
{
    SetUnhandledExceptionFilter(unhandled_handler);

    WinService a(argc, argv);
    return  a.exec();
}

если внутри кода сделать специальную ошибку, то сервис стартует и сразу же останавливаетя=все правильно, но dmp файл не создается. Как сделать так, чтобы он создавался?
8  Qt / Вопросы новичков / Re: Работа с дамб файлом : Февраль 16, 2021, 13:57
Просто зачем вам dump вообще? По хорошему, класс QTest ведь не просто так придумали.
Если ошибка в программе, то её надо отлавливать при отладке. Или, вообще, TDD использовать.
А если в системе, то вам от этого дампа не горячо, ни холодно. Улыбающийся
в том-то и дело,что бывают непредвиденные падения, их как-то надо отлавливать, тестить на "боевой" среде нельзя,а там другие случаи,нежели на тестовой
9  Qt / Вопросы новичков / Re: Работа с дамб файлом : Февраль 10, 2021, 16:01
Где вы в слове dump "б" углядели,? Даже интересно. Улыбающийся
А прочитать (для винды) https://soft-setup.ru/memory-dmp-chem-otkryt-fajl-dampa-pamyati-windows/
Ну и https://www.programmersought.com/article/7329367051/


Супер, спасибо.
Если из под студии, то код для создания crash dump тут: https://stackoverflow.com/questions/9020353/create-a-dump-file-for-an-application-whenever-it-crashes
10  Qt / Вопросы новичков / Работа с дамб файлом : Февраль 10, 2021, 14:33
Добрый день, понимаю, что тема не совсем чисто под QT,но и для работы с QT она точно подходит, может кто откликнится.Подскажите пожалуйста ссылку на материал(пока ищу, но не нашел) или опишите пожалуйста, как получать и отлаживать работы с дамб файлом для студии. То есть я хочу научиться
(1)получать дамб файл после падения exe файла
(2)открывать каким-то специальным образом этот файл через VS2019
(3)находить по дамб файлу в отладке причину падения
Код:
int main()
{
    int var = 7;
    int* refInt = nullptr;
    var = *refInt;
    return 0;
}
Спасибо
11  Qt / Вопросы новичков / Re: Creator NO DEBUG : Февраль 02, 2021, 15:13
Ещё и на винде, наверное? Улыбающийся
Yesтественно)))
12  Qt / Вопросы новичков / Re: Creator NO DEBUG : Февраль 02, 2021, 14:33
На любой программе или на определённой? Если просто создать новый проект и попытаться отлаживать - будет то же самое?
да, часа два сидел, то компиляторы QTCreator не видел, поставил новый, сразу же определил, то потом отладка не работала на конкретном проекте, поставил дебаггер не 8.1, 10 10 все заработало.В моем случае было именно так.
13  Qt / Вопросы новичков / Re: Creator NO DEBUG : Февраль 02, 2021, 14:13
У меня в main попадает брейк на QApplication a(argc, argv); а дальше при f10 попадает на MainWindow w и не проваливается, а просто вырубается программа
14  Qt / Вопросы новичков / Re: Creator NO DEBUG : Февраль 02, 2021, 14:03
Такое бывает, если вначале собрать программу в режиме release, а после просто переключить режим debug и дать команду на запуск приложения. Можно просто пересобрать проект в режиме debug и начать отладку.
пересобрал, все равно так же
15  Qt / Вопросы новичков / Creator NO DEBUG : Февраль 02, 2021, 13:52
Добрый день, поставил новый Creator 4.14 вылетает при отладке следущая ошибка(см.картинку) как ее разрешить, чтобы можно было отлаживать?
Страниц: [1] 2 3 ... 7

Страница сгенерирована за 0.056 секунд. Запросов: 23.