Ответы пользователя по тегу C++
  • Как использовать QtSerialPort?

    peleron
    @peleron
    Веду кружки по робототехнике
    Как отметил Армянское Радио - нужно проверить в первую очередь код возврата.
    Во-вторых, возможно вызов процедуры bool QSerialPort::waitForBytesWritten(int msecs) может помочь.
    Ответ написан
    Комментировать
  • MinGW или MSVC: какой компилятор выбрать для приложений на Qt под Windows?

    peleron
    @peleron
    Веду кружки по робототехнике
    Не знаю как для Андроида, но MSVC компилятор стоит использовать только если нужно статически линковаться с библиотеками, им собранными. В остальных случаях удобнее использовать MinGW.
    В нём и поддержка C++11 гораздо шире. И под Андроида возможно используется компилятор на базе gcc, т.е. схожий с MinGW.
    А насчёт страха использования GDB - то в QtCreator не заметно какой отладчик используется.
    Ответ написан
    Комментировать
  • Как создать ярлык средствами winapi на C++?

    peleron
    @peleron
    Веду кружки по робототехнике
    Линковщик не находит реализаций указанных процедур - CoInitialize, CoCreateInstance и т.д.
    1. Вариант: Вам надо в опции компилятора добавить пути к библиотеке Ole32.lib
    Но насколько я понимаю, в случае с mingw компилятором статически вы не сможете прилинковать эту библиотеку, поэтому вариант 2 либо собирайте в Visual Studio
    2. Сделайте динамическую компиляцию и во время запуска приложения подсуньте ему библиотеку Ole32.dll
    Ответ написан
  • Избавление от экспонентной записи ответа и упрощение кода

    peleron
    @peleron
    Веду кружки по робототехнике
    а ещё лучше
    printf("%-20s %.3f\n", "фунт стерлингов", dollar/funt);
    Ответ написан
  • Где найти описание константных типов в с++/com?

    peleron
    @peleron
    Веду кружки по робототехнике
    Посмотрите в разделе "Указатели" на сайте www.codenet.ru/db/vfp/winapi
    В вашем случае:
    LPDATAOBJECT - указатель на какой-то объект
    LPCITEMIDLIST - указатель на константный список из ITEMID
    Ответ написан
    1 комментарий
  • Как правильно выносить код в разные файлы?

    peleron
    @peleron
    Веду кружки по робототехнике
    Выносить код в отдельную dll имеет смысл только если нужно запускать несколько экземпляров вашей программы, либо в dll можно вынести какой-то специфичный код, который зависит от типа Операционной системы или других факторов (нп. создание тестовой библиотеки и полноценной)
    Про разбиение одного файла на несколько - тут @KOLANICH верно описал. Добавлю, что в заголовочные файлы (.h) желательно не размещать ничего, кроме определения типов и классов, а также описания сигнатур функций: т.е. ни глобальных переменных, ни тел реализаций функций тут быть не должно, в общем - ни какой логики.
    А также стараться поменьше включать заголовочные файлы друг в друга - потом на грабли с очерёдностью компиляции наткнётесь.
    Ответ написан
    Комментировать
  • Как загрузить картинку в IplImage с ip камеры без предварительного сохранения ее на диск?

    peleron
    @peleron
    Веду кружки по робототехнике
    Преобразование IplImage в JPG реализуется с помощью процедуры cvEncodeImage - на выходе получаем полностью готовый JPG - со всеми атрибутами и мета-информацией.
    Обратная процедура делается с помощью функции cvDecodeImage
    Официальная документация н...
    Пример, но для древнего opencv
    Мой код для кодирования в JPG - к сожалению обратной процедуры не нашёл, но главное - понять JPG картинки передаются через CvMat структуры, главные поля которой - data.ptr и cols
    #define MAX_JPEG_IMAGE_SIZE	1000000
    int jpeg_params[] = { CV_IMWRITE_JPEG_QUALITY, 50, 0 };
    CvMat* encodedMat;
    IplImage* frame = 0;
    CvCapture *capture;
    int image_length;
    unsigned char jpeg_image[MAX_JPEG_IMAGE_SIZE];
    {
    		cvWaitKey(100);
    		frame = cvQueryFrame(capture);
    		if (frame == NULL) {
    			printf("ERROR %s() Can't query frame from camera.\n", __FUNCTION__);
    			break;
    		}
    		encodedMat = cvEncodeImage(".jpeg", frame, jpeg_params);
    		if (encodedMat == NULL) {
    			printf("ERROR %s() Can't encode frame.\n", __FUNCTION__);
    			break;
    		}
    		if (encodedMat->cols > MAX_JPEG_IMAGE_SIZE) {
    			printf("ERROR %s() Size of encoded image (%d) exceeded maximum buffer size (%d).\n",
    					__FUNCTION__, encodedMat->cols, MAX_JPEG_IMAGE_SIZE);
    			break;
    		}
    		image_length = encodedMat->cols;
    		memcpy(jpeg_image, encodedMat->data.ptr, image_length);
    		cvReleaseMat(&encodedMat);
    }
    Ответ написан
    Комментировать