【问题标题】:Vala examples compile errorsVala 示例编译错误
【发布时间】:2017-05-06 04:37:33
【问题描述】:

从 MSYS2 项目安装了适用于 Windows64 的 Vala。从https://wiki.gnome.org/Projects/Vala/Examples 开始运行各种示例。一些示例会产生类似

的错误

...“杂波样本:动画演员”

D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty

D:\Projects\Vala\Examples>valac.exe --pkg clutter-1.0 clutter.vala -o clutter.exe
D:/Projects/Vala/Examples/clutter.vala.c:7:29: fatal error: clutter/clutter.h: No such file or direc
tory
 #include <clutter/clutter.h>
                             ^
compilation terminated.
error: cc exited with status 1
Compilation failed: 1 error(s), 0 warning(s)

...和“Vala GTK+ 3.x 示例:基本示例”

D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty

D:\Projects\Vala\Examples>valac.exe --pkg gtk+-3.0 gtk+3-hello.vala -o gtk+3-hello.exe
D:/Projects/Vala/Examples/gtk+3-hello.vala.c:17:21: fatal error: gtk/gtk.h: No such file or director
y

                     ^
compilation terminated.
error: cc exited with status 1
Compilation failed: 1 error(s), 0 warning(s)

...和 ​​Vala 集合:libgee 示例

D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty

D:\Projects\Vala\Examples>valac.exe --pkg=gee-0.8 libgee-collections.vala -o libgee-collections.exe

error: Package `gee-0.8' not found in specified Vala API directories or GObject-Introspection GIR di
rectories
Compilation failed: 1 error(s), 0 warning(s)

我意识到 pkg:gee-0.8 没有安装,但我确实使用 pacman 找到了 0.20.0-1。我不知道如何引用这个库?

$ pacman -Ss gee -v
Root      : /
Conf File : /etc/pacman.conf
DB Path   : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/
Hook Dirs : /usr/share/libalpm/hooks/  /etc/pacman.d/hooks/
Lock File : /var/lib/pacman/db.lck
Log File  : /var/log/pacman.log
GPG Dir   : /etc/pacman.d/gnupg/
Targets   : gee
mingw32/mingw-w64-i686-libgee 0.20.0-1
    A collection library providing GObject-based interfaces and classes for
    commonly used data structures (mingw-w64)
mingw64/mingw-w64-x86_64-libgee 0.20.0-1
    A collection library providing GObject-based interfaces and classes for
    commonly used data structures (mingw-w64)

显然我的安装不正确/不完整。我需要更改或安装什么来解决这些类型的问题?

感谢您的帮助!

【问题讨论】:

    标签: windows vala pkg-config msys2


    【解决方案1】:

    直接运行valac.exe 可能会有问题。

    通常在使用 msys2 编译某些东西时,您首先进入 msys2 shell 并正确设置了 MSYSTEM 环境变量。 (在 msys2 根文件夹中有脚本和较新版本的可执行文件可以为您执行此操作)。

    例如,当您设置MSYSTEM=MINGW64(注意:MINGW64 必须为大写!)然后运行mingtty.exebash.exe --login 时,您可以检查您的PKG_CONFIG_PATH var:

    $ echo $PKG_CONFIG_PATH
    /mingw64/lib/pkgconfig:/mingw64/share/pkgconfig
    

    一定要了解MSYSTEM这三种设置的区别:

    • MSYS - 仅用于引导核心 msys2 系统和用于打包目的
    • MINGW32 / MINGW64 - 您在使用 msys2 时工作的“正常”环境(32 位/64 位)。

    不同MSYSTEM 环境的pacman 包名称带有前缀。 IE。以mingw-w64-x86_64 开头的包在MSYSTEM=MINGW64 环境中使用。

    vala 使用pkg-config(确保安装了mingw64/mingw-w64-x86_64-pkg-config)当您使用--pkgpkg-config 指定某些内容时,然后搜索.pc 文件(如gee-0.8.pc)。

    mingw-w64-x86_64-libgee 包将其 pc 文件安装为/mingw64/lib/pkgconfig/gee-0.8.pc

    【讨论】:

      【解决方案2】:

      gee-0.8 0.8 是接口版本号,而不是发布版本号。所以安装版本 0.20.0 并且相关的接口文件应该可用。这也适用于 Clutter 和 GTK+3。

      【讨论】:

        猜你喜欢
        • 2012-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2019-11-05
        相关资源
        最近更新 更多