致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录

Posted

技术标签:

【中文标题】致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录【英文标题】:Fatal error: glib.h: No such file or directory when using vscode and 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 中隔离了它以用于 ***。我还成功地在 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(或类似的)库文件 【参考方案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 感谢您的关注。我在答案中修复了它。

以上是关于致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

VSCode:git致命错误:文件在目录之外

GLib 正则表达式匹配在特定匹配和模式上给出分段错误

Xcode:找不到 glib.h 文件

GLib和CUDA之间的`__noinline__`宏冲突

找不到 glib.h

dbus-glib.h里面没有DBusConnection,只有DBusGConnection。