c++ - Mingw-w64 - printf 不起作用

标签 c++ ffmpeg console mingw mingw-w64

首先我想根据我的要求修改ffplay。然后我注意到我的构建中的原始 ffplay 无法播放某些视频文件,但它没有向控制台写入任何消息。然后我注意到,当我在没有参数的情况下运行 ffmpeg 时,它也不会写入任何使用消息。但它有效。 如果我从终端运行它,就像异步运行一样!终端仅显示下一行。我的意思是它要求下一个命令。但是 ffmpeg 进程在任务管理器中可见,并且它会按照我的请求写入输出视频文件!

我创建了以下源文件。我修改了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 创建了真正的 hello world 应用程序,没有任何额外的库。而且它的 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

最佳答案

解决了!

出于某种原因,您必须明确指定您制作控制台应用程序。

在 qmake helloworld 中:

CONFIG   += console

在 FFmpeg 的 configure 脚本中,它是一个额外的 ldflag 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

关于c++ - Mingw-w64 - printf 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608963/

相关文章:

python - 如何在 python 脚本中运行 ffmpeg 命令?

node.js - 如何将 Opus 流从 Discord 传输到 RTP

ffmpeg - 使用 ffmpeg 创建 DVD 视频菜单

c# - C# 中的虚数

c# - 有没有一种使用 Console.ReadKey 在值之间进行选择而无需在类型之间进行大量转换的好方法?

c# - ReadKey while key is not pressed 做某事

c++ - 为什么我的程序在选择排序功能后暂停?

c++ - GLSL/C++ 中的白色(可能未着色)OBJ

python - 逼近大型对称矩阵的最高 3 个特征值和特征向量的快速方法

c++ - 立体系统 - 使用 OpenCv 获取 3d 位置