【问题标题】:Fatal error: glib.h: No such file or directory when using vscode and mingw致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录
【发布时间】:2021-01-18 12:20:22
【问题描述】:

我在尝试将 glib.h 包含到项目中时遇到以下致命错误。 mingw gcc 找不到 glib.h。

致命错误:glib.h:没有这样的文件或目录

我已将问题隔离在一个简单的 helloworld.c 文件中。

在 Ctrl-Shift-B 构建时,我明白了。

我还按照阅读 here 的说明更新了 c_cpp_properties.json 文件中的 includePath。

是否有人对我应该调查或解决此问题有任何想法?我花了很多时间,但在这方面没有任何进展。 :(

helloworld.c 是:

#include <stdio.h>

#include <glib.h>


void main() {
    
    printf("Hello World!");

    char c = getchar();

}

c_cpp_properties.json 是:

{
    "configurations": [
        {
            "name": "MingGW",
            "includePath": [
                "${workspaceFolder}/**",
                "C:\\cryptolibs\\msys2-64\\mingw64\\include\\glib-2.0",
                "C:\\cryptolibs\\msys2-64\\mingw64\\lib\\glib-2.0\\include",
                "C:\\cryptolibs\\pbc-0.5.14\\include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17763.0",
            "compilerPath": "C:\\MinGW\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceFolder}",
                    "C:\\cryptolibs\\msys2-64\\mingw64\\include\\glib-2.0",
                    "C:\\cryptolibs\\msys2-64\\mingw64\\lib\\glib-2.0\\include",
                    "C:\\cryptolibs\\pbc-0.5.14\\include"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 4
}

launch.json 是:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "gcc.exe - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": ""
        }
    ]
}

tasks.json 是:

{
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: gcc.exe build active file",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": ["$gcc"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

【问题讨论】:

  • 你为什么要把它包括在内?您认为它将提供哪些声明?
  • 谢谢。我需要 glib 来完成一个更大的研究生项目。我已经在 helloworld.c 中隔离了它以用于 stackoverflow。我还成功地在 unbuntu 下构建了 glib 作为测试。但是,我们的项目具有固有地与 windows 以及涉及的其他几个项目成员相关的依赖项。
  • 好吧,显然你需要在你的系统上安装glib dev 包。你有吗?
  • 我有。但是,我无法在 windows 下构建 glib。对我来说,“配置”文件不会在 powershell 或 cygwin 下运行。因此,我使用 msys 安装并安装了 gtk,希望能够解决它,因为一些网页指向了这个方向。但是,唉,我被困住了。我应该直接安装 glib 吗?你知道如何在windows下安装和构建glib吗?我有 glib-2.59.0 但它没有配置,我也没有在上面运行 make...
  • 在 linux 下,glib.h 文件位于:/usr/include/glib-2.0/glib.h。当然,一个重要的考虑因素是您是否安装了 libglib6.so(或类似的)库文件

标签: c visual-studio-code gtk mingw glib


【解决方案1】:

为了能够使用 glib.h,您需要在系统上安装 glib2。 如果你有一个 shell(比如 MSYS2),你通常可以通过以下方式获取编译器标志:

pkg-config --cflags glib-2.0

和链接器标志:

pkg-config --libs glib-2.0

例如,在我的 MSYS2 系统上,这会返回:

-LD:/Prog/winlibs64-10.2.0/custombuilt/lib -lglib-2.0 -lintl

-mms-bitfields -ID:/Prog/winlibs64-10.2.0/custombuilt/include/glib-2.0 -ID:/Prog/winlibs64-10.2.0/custombuilt/lib/glib-2.0/include -ID:/Prog/winlibs64-10.2.0/custombuilt/include

分别。

【讨论】:

  • 小修正:pkg-config --libs glib-2.0 获取链接器标志。
  • @OctoPoulos 感谢您的关注。我在答案中修复了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2021-05-15
  • 2014-10-31
  • 2022-01-11
  • 2021-09-19
相关资源
最近更新 更多