【发布时间】:2016-07-20 13:43:14
【问题描述】:
我的问题似乎很简单:我希望能够为 C 中的 Windows(如果可能的话,在 Windows 上)创建一个带有简单 GUI 的简单程序。 我当前的环境是 eclipse IDE,msys2 和 mingw64 工具链都在 windows 10 上。 我想将 pkg-config 与 eclipse 一起使用,以避免“硬编码”我所有的库,为此我首先尝试了 eclipse 的 pkg-config 插件(当我创建新项目时它崩溃,空指针异常)。然后我尝试在对 GCC 的调用中插入 pkg-config 命令。为此,我不得不使用 powershell,因为 cmd 不允许它。 但即使在 powershell 上,我也无法使用它,因为 pkg-config 返回给我的字符串被 gcc 视为命令。 下面是eclipse用来编译的:
powershell gcc -O0 -g3 -Wall -c -fmessage-length=0 --std=c99 $(pkg-config-win --cflags --libs gtk+-3.0) -o main.o "..\\main.c"
这就是它给我的回报:
gcc.exe: error: unrecognized command line option '-mms-bitfields -pthread -mms-bitfields -IC:/msys64/mingw64/include/gtk-3.0 [...]'
然后我尝试删除 pkg-config 的 --cflags: eclipse使用的命令:
powershell gcc $(pkg-config-win --libs gtk+-3.0) -o Test.exe main.o -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -lwinmm -ldwmapi -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
这是结果(同一行的 8 倍)。
gcc.exe: error: .0: No such file or directory
我尝试了几十种不同的方法,但都没有奏效。
所以我的主要问题是:
- 有解决这个问题的简单方法吗?
- 我做的事情是否正确(Eclipse 是否能够做这些事情?)
- 如果没有,我该怎么办? (更改 IDE?更改 GUI 库,...)
我希望你能帮助我,我对你可能提供的可能性持开放态度。如果我在某些方面不清楚或没有提供足够的信息,请原谅,我会尽快回复您的问题:p
【问题讨论】:
-
听起来好像有什么东西导致整个
pkg-config输出被视为一个长参数,而不是多个以空格分隔的参数。我不确定有什么修复方法...... Eclipse 中有什么东西? -
不知道是不是真的和eclipse有关。这是在 powershell 中输入的命令: gcc -O0 -g3 -Wall -c -fmessage-length=0 --std=c99 $(p .o "..\\main.c" 结果如下: gcc。 exe: error: unrecognized command line option '-mms-bitfields -pthread [...]' 所以看来 Eclipse 将命令传递到控制台并收回其答案以显示。
-
那么这是 PowerShell 问题吗? PowerShell 是否将
$(...)的替换视为单个参数? -
你会如何检查这样的事情?
-
您可以编写一个简单的 C 程序,它只在标准输出上打印参数,每行一个,然后在 PowerShell 中构建并像
test.exe $(echo hello world)一样运行它。如果输出是hello和world在不同的行上,或者如果 PowerShell 抱怨语法无效,那么 PowerShell 没有这样做;如果输出是hello world在一行上,那么它是 PowerShell 做的,并且需要不同的语法。
标签: c eclipse windows gtk pkg-config