LINUX.ORG.RU

Qt printf не отрабатывает

 


0

1

Создал в Qt проект, на чистом С, там всего вот эти строки:

#include <stdio.h>

int main()
{
    printf("Hello World!\n");

    return 0;
}

И вот не выводится ничего, в pro файле есть «CONFIG += console». OS - Windows7.

Может кто-то подсказать что тут не так? Программа отрабатывает и показывает «Press return to close this window», и никакого приветствия

Ответ на: комментарий от I-Love-Microsoft

«Qt Creator 4.3.1 Based on Qt 5.9.1 (MSVC 2015, 32 bit)

Built on Jun 29 2017 04:14:35

From revision e974f0733e

Copyright 2008-2017 The Qt Company Ltd. All rights reserved.»

Kronick
() автор топика

«LINUX.ORG.RU: Русская информация об ОС Linux»
OS - Windows7

на финфак

Deleted
()
Ответ на: комментарий от UVV

А что? :) Просто я читаю ситуацию, и не вижу причин почему не должно работать. Если не в среде, так может отдельно должно выводить.

Даже у меня бывает в упор не работает что-то простое, а потом выясняется что баг или чето не учел.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Deleted

Ничего не надо, если выбрано CONFIG+=console то под оффтопиком (да и в Linux) появится окошко Press return to close this window и ничего там не промелькнет, а наоборот позволит смотреть вывод программы.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Даже у меня бывает в упор не работает что-то простое, а потом выясняется что баг

В твоём коде, ессно? ;)

UVV ★★★★★
()

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

Kronick
() автор топика
Ответ на: комментарий от Kronick

Вся проблема в том, что добавил свой хедер кастомный,

Всё стало ещё более запутаннее, чем казалось ранее

UVV ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

А вот теперь мне не очень понятно что происходит если честно, я пытаюсь добавить openssl, вот сам про файл:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.c

HEADERS += \
    hash.h

LIBS += -LC:/OpenSSL-Win32/lib -llibcrypto

INCLUDEPATH += C:/OpenSSL-Win32/include

И вот сам код билдится, при запуске до printf не доходит, показывает:

bhash.exe exited with code -1073741515

Ну и сам хедер:

#ifndef HASH_H
#define HASH_H

#include <openssl/sha.h>
#include <openssl/ripemd.h>

void bbp_sha256(uint8_t *digest, const uint8_t *message, size_t len) {
    SHA256_CTX ctx;
    SHA256_Init(&ctx);
    SHA256_Update(&ctx, message, len);
    SHA256_Final(digest, &ctx);
}

void bbp_rmd160(uint8_t *digest, const uint8_t *message, size_t len) {
    RIPEMD160_CTX ctx;
    RIPEMD160_Init(&ctx);
    RIPEMD160_Update(&ctx, message, len);
    RIPEMD160_Final(digest, &ctx);
}

void bbp_hash256(uint8_t *digest, const uint8_t *message, size_t len) {
    uint8_t tmp[SHA256_DIGEST_LENGTH];
    bbp_sha256(tmp, message, len);
    bbp_sha256(digest, tmp, SHA256_DIGEST_LENGTH);
}

void bbp_hash160(uint8_t *digest, const uint8_t *message, size_t len) {
    uint8_t tmp[SHA256_DIGEST_LENGTH];
    bbp_sha256(tmp, message, len);
    bbp_rmd160(digest, tmp, SHA256_DIGEST_LENGTH);
}

#endif // HASH_H

Опенссл качал последнюю версию. Такое как-нибудь можно продебажить? Я так понимаю, что может несоответствие какое в функциях в новой версии или вроде того, но не должно же оно без всяких ошибок просто падать в рантайме?

Kronick
() автор топика

Может кто-то подсказать что тут не так? Программа отрабатывает и показывает «Press return to close this window», и никакого приветствия

Галочку Run in console в Projects убери.

EXL ★★★★★
()
Ответ на: комментарий от anonymous

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

Kronick
() автор топика

И все-таки оно запустилось, только с использованием Opensslv1.0.2L, до этого пытался с версией 1.1. Но если честно, то я все равно не понимаю как в случае чего такое дебажить. Ну и не понимаю что не так с 1.1 версией, уже не первый раз пытаюсь ее юзать и все какие-то проблемы.

Kronick
() автор топика
Ответ на: комментарий от UVV

А можете посоветовать как это обычно проверяется? То есть я вот открываю чужой код, там написано «Понадобится опенссл», ну и собственно все. Хедер выше по треду есть, мне получается чтобы версию проверить нужно идти читать исходники? Вот к примеру иду смотрю исходники опенссл, открываю файл «ripemd.h», например вот:

https://github.com/openssl/openssl/blob/6f0ac0e2f27d9240516edb9a23b7863e7ad02...

Вот, а что дальше? Проверить формат могу, типы данных вроде совпадают, а что еще проверять?

Kronick
() автор топика
Ответ на: комментарий от Kronick

Ну и не понимаю что не так с 1.1 версией, уже не первый раз пытаюсь ее юзать и все какие-то проблемы.

Учти что если ты еще захочешь в своем приложении использовать QSslSocket или https, то возникнет проблема, так как Qt с 1.1 не работает (до версии 5.10)

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.