【问题标题】:The C preprocessor (MinGW's cpp.exe) produces no outputC 预处理器(MinGW 的 cpp.exe)不产生输出
【发布时间】:2020-05-11 08:19:59
【问题描述】:

我正在尝试在 test.c 上运行 C:\MinGW\bin\cpp.exe -v -o main.txt test.c

#ifdef HELLO
HELLO!
#else
BYE!
#endif

但只得到以下输出,没有明显错误,也没有写入main.txt(也没有任何其他文件):

Using built-in specs.
COLLECT_GCC=C:\MinGW\bin\cpp.exe
Target: mingw32
Configured with: ../src/gcc-8.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-8.2.0-5' --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-isl=/mingw --enable-libgomp --disable-libvtv --enable-nls --disable-build-format-warnings
Thread model: win32
gcc version 8.2.0 (MinGW.org GCC-8.2.0-5)
COLLECT_GCC_OPTIONS='-E' '-v' '-o' 'main.txt' '-mtune=generic' '-march=i586'
 c:/mingw/bin/../libexec/gcc/mingw32/8.2.0/cc1.exe -E -quiet -v -iprefix c:\mingw\bin\../lib/gcc/mingw32/8.2.0/ test.c -o main.txt -mtune=generic -march=i586


我找到了 Denis Auroux / Tristan Miller 的 GPPwindows build,它们按预期工作(gpp.exe -o main.txt test.c - 实际上,您需要 -C 选项,请参阅 docs ),但我仍然对我使用 cpp 的问题感兴趣。

【问题讨论】:

  • 看起来有点像 cc1 死了或者甚至没有启动。我的 cpp 工作正常。我建议检查 Process Monitor 是否可以告诉您更多信息。
  • @DavidMacek 谢谢!它死了,因为它找不到 DLL,因为它没有在 Path 中设置...我没有收到关于此的错误消息对话框,因为我正在使用的 cmd.exe 是在另一个应用程序中启动的。
  • 很高兴能提供帮助。

标签: mingw c-preprocessor


【解决方案1】:

我在文件管理器“生成”的命令提示符下运行它。 直接运行cmd.exe,出现如下错误提示对话框:

---------------------------
cc1.exe - System Error
---------------------------
The code execution cannot proceed because libgmp-10.dll was not found. Reinstalling the program may fix this problem. 
---------------------------
OK   
---------------------------

Process Monitor 显示最终的Exit Status: 1,但在过滤进程名称cpp.exe 时我看不到上面的DLL,尽管cc1.exe 也有一些BUFFER OVERFLOW 结果。

有问题的 DLL 存在于我的 C:\MinGW\bin 中,因此将此路径添加到 环境变量 不仅可以解决“libgmp-10.dll is missing”问题,而且还可以使 cpp.exe 已知,因此不会运行时需要路径。

【讨论】:

  • 进程监视器中的缓冲区溢出通常是无害的。
猜你喜欢
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
相关资源
最近更新 更多