Mingw-w64 — printf не работает

Сначала я хотел изменить ffplay в соответствии с моими требованиями. Затем я заметил, что оригинальный ffplay из моей сборки не может воспроизводить некоторые видеофайлы, но он не записывал никаких сообщений в консоль. Затем я заметил, что ffmpeg также не пишет никаких сообщений об использовании, когда я запускаю его без параметров. Но это работает. Если я запускаю его из терминала, это все равно что работать асинхронно! Терминал просто показывает следующий ряд. Я имею в виду, что он просит следующую команду. Но ffmpeg процесс виден в диспетчере задач, и он записывает выходной видео файл, что я просил

Я создал следующий файл souce. Я изменил Makefile. Так что встроенный exe-файл работает точно так же. Я понятия не имею, как это может быть.

#include <SDL.h>
#include "cmdutils.h"
const char program_name[] = "hello";
const int program_birth_year = 2013;

void show_help_default(const char *opt, const char *arg)
{
printf("zxcvbnm\n");
}

int main(int argc, char **argv)
{
printf("1234567890\n");
return 0;
}

И после этого я создал реальный Привет мир приложение с MinGW-W64 и qmake без всяких лишних библиотек. И его printf не работает.

Я хочу предотвратить это поведение.

Я хочу, чтобы printf работал в традиционной манере.

Как я собираю FFmpeg:

PKG_CONFIG_PATH=/home/developer/workspace/MinGW32fs/lib/pkgconfig/ \
SDL_CONFIG=/home/developer/workspace/MinGW32fs/bin/sdl-config \
./configure \
--prefix=/home/developer/workspace/MinGW32fs \
--extra-ldflags="-L/home/developer/workspace/MinGW32fs/lib" \
--extra-cflags="-I/home/developer/workspace/MinGW32fs/include" \
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-  \
--pkg-config=pkg-config   --enable-libtheora --enable-libvorbis --enable-libvpx \
--enable-outdev=sdl --enable-shared --disable-static \
--disable-doc --disable-manpages --disable-podpages

make

2

Решение

Решено!

По какой-то причине вы должны явно указать, что вы делаете консольное приложение.

В qmake helloworld:

CONFIG   += console

В FFmpeg’s configure скрипт это лишний флаг console:

PKG_CONFIG_PATH=/home/developer/workspace/MinGW32fs/lib/pkgconfig/ \
SDL_CONFIG=/home/developer/workspace/MinGW32fs/bin/sdl-config \
./configure \
--prefix=/home/developer/workspace/MinGW32fs \
--extra-ldflags="-L/home/developer/workspace/MinGW32fs/lib -Wl,-subsystem,console" \
--extra-cflags="-I/home/developer/workspace/MinGW32fs/include" \
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-  \
--pkg-config=pkg-config   --enable-libtheora --enable-libvorbis --enable-libvpx \
--enable-outdev=sdl --enable-shared --disable-static \
--disable-doc --disable-manpages --disable-podpages
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]