【问题标题】:Visual Studio Code "python.h: No such file or directory" windows gccVisual Studio Code“python.h:没有这样的文件或目录”windows gcc
【发布时间】:2022-01-16 17:11:04
【问题描述】:

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

python.h: 没有这样的文件或目录 gcc

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

我已经安装了 python 3.8 并尝试了其他解决方案,并且已经将 Python.hpython 库路径 放在了项目包含路径中。 p>

“C:/Users/MPC/AppData/Local/Programs/Python/Python38-32/include/” 和 "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_cpp_properties.json 只配置智能感知
  • 你需要修改tasks.json来告诉编译器自己如何编译,编译器应该使用哪些标志、选项和参数。
  • @AlanBirtles 我正在按照link的构建步骤进行操作
  • 我建议您找到一些关于-I-L-l 选项的文档或教程。你没有正确使用它们。
  • 不要气馁,但“C++ 初学者”和“尝试嵌入 Python”并不是一个理想的组合。嵌入 Python 更多的是处于“中级到高级”级别。

标签: python c++ visual-studio-code gcc compilation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    问题是简单错误的组合,作为初学者,我通过在gcc -l -L option flags for library link examplegcc arguments docs 中进行一些挖掘来解决它。

    应该注意几个简单而重要的点:

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

    2. 要在 C++ 中嵌入 python,首先必须通过 -I 选项让编译器知道 python include files 的路径。然后是 -L 选项的 python 库 路径。然后是python的libs文件夹中包含的每个所需python .lib文件的名称。

    这是一个例子:

                "-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教程不错

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 2012-06-17
      • 2021-08-27
      • 2017-12-13
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多