gpt4 book ai didi

c++ - 为什么 g++ 不能编译一个简单的 GTK 程序?

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:05 25 4
gpt4 key购买 nike

这几天我开始自学一些 C++,同时我决定学习一些 GUI 编程。问题是,它不会编译,无论是使用 GTK(Windows bundle 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

但我得到的唯一输出是这个(后倾而不是 $() 返回相同的东西):

: 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++ 标记。)

最佳答案

这不是 gcc 问题。这是一个脚本/shell/bash/环境问题。

gcc: error: $(pkg-config: No such file or directory

这一行表示“gcc”看到了 $(pkg-config 它期望文件名的地方;Linux 应用程序期望命令行替换已经由调用它们的 shell 完成。

这意味着 shell 没有使用 $(pkg-config --cflags gtk+-3.0) 并对其执行替换。

您可能想尝试制作一个 bash 脚本 gtkcc.sh,它会为您执行此操作并将相关参数插入适当的位置。

#!/bin/bash

# usage: gtkcc.sh <filename>
filename="$1"; shift
if [ -z "${filename}" ]; then echo "Usage: $0 <filename>"; exit 255; fi
if [ ! -f "${filename}.c" ]; then echo "Cannot find ${filename}.c"; exit 255; fi

gtkCFLAGS="$(pkg-config --cflags gtk+-3.0)"
gtkLDFLAGS="$(pkg-config --libs gtk+-3.0)"

cmd="gcc ${gtkCFLAGS} -o \"${filename}\" \"${filename}.c\" ${gtkLDFLAGS}"
echo $cmd >${TMP}/gtkcc.log
eval $cmd

另存为 gtkcc.sh 或 gtkcc,chmod a+rx gtkcc.sh

更改您的 bat 文件以调用:

%cygpath%\bash.exe gtkcc.sh %filename%

如果不行,启动bash并查阅${TMP}/gtkcc.log,否则你可以注释掉echo行。

关于c++ - 为什么 g++ 不能编译一个简单的 GTK 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com