【发布时间】:2013-12-31 21:57:05
【问题描述】:
这几天我开始自学一点 C++,同时我决定学习一些 GUI 编程。问题是,无论是使用 GTK(Windows 捆绑包 3.6.4)还是 wxWidgets(3.0.0),它都无法编译。我得到的错误是相似的,所以我坚持使用 GTK+ 来回答这个问题。
5 天后(7 次重新编译 wx、许多教程、SO 问题和谷歌),这就是我尝试编译 code 的方式(我在 Windows 7、64 位下,这不是一个选项立即切换到 Linux):
@echo off
set cygpath=C:\Cygwin\bin
set filename=simple
%cygpath%\bash.exe -c "gcc $(pkg-config --cflags gtk+-3.0) -o %filename% %filename%.c $(pkg-config --libs gtk+-3.0)"
echo.
pause
但我得到的唯一输出是这个(backtilts 而不是$() 返回相同的东西):
: Invalid argument
: Invalid argument
我一开始在没有 Cygwin 的情况下也尝试过,但结果是:
gcc: error: $(pkg-config: No such file or directory
gcc: error: gtk+-3.0): No such file or directory
gcc: error: $(pkg-config: No such file or directory
gcc: error: gtk+-3.0): No such file or directory
gcc: error: unrecognized command line option '--cflags'
gcc: error: unrecognized command line option '--libs'
使用引号或双引号根本没有帮助。我在 cygwin-bash 或 Windwos 提示符下都尝试了所有这些
我对 C++、wxWidgets 和 GTK+ 完全陌生,我已经看过 this,但由于它没有解决我的问题,而且由于声誉问题我无法发表评论,我想我必须提出一个新问题.
另外,我将编译器更改为TDM-GCC,因为我无法使用 MinGW 编译 wx。这有点相关吗?我在这里错过了什么?
提前感谢您的帮助。
编辑:抱歉,刚刚意识到示例是用 C 编写的,而不是 C++。我现在添加标签。 (但是,错误与我用于 wx 的 C++ 代码相同,因此我保留了 C++ 标记。)
【问题讨论】:
-
cmd.exe似乎没有在字符串中进行内联变量替换。 (Windows 大师请确认或反驳。) -
@H2CO2:是的,它确实替换了字符串中的变量。除了
cmd中的变量拼写为%LIKE_THIS%而不是$(LIKE_THIS)。 -
@BillyONeal 3,而不是 2(我会想念我的双重负电荷)。这看起来很合乎逻辑,但
%it --work with /commands/too%呢? -
@H2CO3:不,那样没有命令支持。
-
@BillyONEal 呃...为什么每个人都不能只使用 Bash...!? (修辞)