Visual Studio 代码 "python.h: No such file or directory" windows gcc

Visual Studio Code "python.h: No such file or directory" windows gcc

我完全是 C++ 的初学者,并且疯狂地尝试将 Python 嵌入 C++ 使用 VS Code IDE 和 GCC 编译器。 我是股票,现在我一直面临这个愚蠢的错误,上面写着:

python.h: No such file or directory gcc

我已按照 "Using GCC with MinGW in VS Code" 中解释的步骤在 VS Code 中配置 C++,但我未能安装 MinGW(bin 文件夹是空的)所以我将已经安装的 CodeBlocks MinGW 添加到我的路径中,它似乎可以工作。

我安装了 python 3.8 并尝试了其他解决方案并且已经安装了 Python.hpython 项目中的库路径 包含路径.

"C:/Users/MPC/AppData/Local/Programs/Python/Python38-32/include/" and "C:/Users/MPC/AppData/Local/Programs/Python/Python38-32/libs/"

这是我要编译的代码:

    #include <stdio.h>
    #include <conio.h>
    #include <python.h>

    int main()
{
    PyObject* pInt;

    Py_Initialize();

    PyRun_SimpleString("print('Hello World from Embedded Python!!!')");
    
    Py_Finalize();

    printf("\nPress any key to exit...\n");
    if(!_getch()) _getch();
    return 0;
}

这是我的 c_cpp_properties.json。 (C++ 配置文件):

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:/Users/MPC/AppData/Local/Programs/Python/Python38-32/include/**",
                "C:/Users/MPC/AppData/Local/Programs/Python/Python38-32/libs/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            "compilerPath": "C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x86"
        }
    ],
    "version": 4
}

这是tasks.json文件:

{
"version": "2.0.0",
"tasks": [
    {
        "type": "cppbuild",
        "label": "C/C++: gcc.exe build active file",
        "command": "C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe",
        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\${fileBasenameNoExtension}.exe"
        ],
        "options": {
            "cwd": "C:/Program Files (x86)/CodeBlocks/MinGW/bin"
        },
        "problemMatcher": [
            "$gcc"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "detail": "compiler: \"C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe\""
    }
]

}

好的,所以你可能应该先完成中级 c++ 课程,但如果你是初学者并且你真的想这样做,我建议使用 visual studio 2019 或 2022,因为它更适合初学者-friendly 和依赖项都在 gui 界面中设置。 顺便说一句,我会对此发表评论,但我还没有 50 的声誉,所以很抱歉。

这个问题是一些简单错误的组合,作为初学者,我通过 gcc -l -L option flags for library link example and gcc arguments docs 中的一些挖掘解决了它。

有几个简单而重要的要点需要注意:

1.选项的顺序非常重要。如果错误,编译器将无法工作。应该是-I(大写i),-g,-L,-l(小写L),-o.

2. 要在 C++ 中嵌入 python 首先 python 包含文件 的路径必须是编译器通过 -I 选项知道。然后通过 -L 选项指向 python libraries 的路径。然后 python .lib 文件的名称 包含在 python.

的 libs 文件夹中

这是一个例子:

            "-IC:/Users/MPC/AppData/Local/Programs/Python/Python38-32/include",=>(path to python include files) 
            "-g",=>(debug option specified by ide)
            "${file}",
            "-LC:/Users/MPC/AppData/Local/Programs/Python/Python38-32/libs",=>(path to python libraries)
            "-lpython38",=>(python lib contained in python libs)
            "-lpython3",=>(python lib contained in python libs)
            "-l_tkinter",=>(python lib contained in python libs)
            "-o",=>(output argument specified by ide)
            "${fileDirname}\${fileBasenameNoExtension}.exe"

希望有了这个回答,像我这样的初学者,能更快的得出结论。 Embedding python in C++ with CMake and Pybind11 and VS Code

也有很好的 youtube 教程