You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Visual Studio中Python C API的链接错误

解决Visual Studio C项目中Python C API未解析外部符号错误

问题背景

在Visual Studio的C项目中调用Python C API时,出现未解析外部符号错误,例如:

unresolved external symbol __imp_Py_Finalize referenced in function _main

已完成以下配置:

  • 将Python库文件夹添加到链接器→附加库目录
  • 将Python包含文件夹添加到C/C++→附加包含目录

项目中的C代码如下:

#include <stdio.h>
#include <stdbool.h>

#include <Python.h>

int main() {
    Py_Initialze();
    printf("Initialized python interpreter!");
    PyObject* module = PyImport_ImportModule("CPBridger");
    if (module == NULL) {
        printf("Can't find module!");
        return -1;
    }

    PyObject* func = PyObject_GetAttrString(module, "helloWorld");
    PyObject* args = PyTuple_Pack(0);
    PyObject_CallObject(func, args);

    Py_XDECREF(func);
    Py_XDECREF(args);

    func = PyObject_GetAttrString(module, "sayHelloTo");
    args = PyTuple_Pack(1, PyString_FromString("LakshyaK2011"));
    PyObject_CallObject(func, args);

    Py_XDECREF(func);
    Py_XDECREF(args);
    Py_XDECREF(module);

    Py_Finalize();
    printf("Finalized python interpreter!");
}

额外需要配置的步骤

1. 指定Python库文件到链接器依赖

打开项目属性,依次进入链接器→输入→附加依赖项,添加对应Python版本的库文件名:

  • Release模式:添加PythonXX.lib(XX为版本号,比如Python311.lib)
  • Debug模式:添加PythonXX_d.lib(比如Python311_d.lib)

注意:必须使用与安装的Python版本、位数(32/64位)完全匹配的库文件

也可以直接在代码开头添加编译指令,省去VS配置步骤:

#pragma comment(lib, "Python311.lib") // Release模式
// #pragma comment(lib, "Python311_d.lib") // Debug模式,注释掉上面一行启用

2. 匹配项目架构与Python位数

进入项目属性→配置属性→常规→平台选项,确保项目的平台目标(x86/x64)与安装的Python位数一致:

  • 若安装的是64位Python,项目必须设为x64
  • 若安装的是32位Python,项目必须设为x86

3. 严格区分Debug/Release模式的库文件

Debug模式下绝对不能使用Release版的Python库(不带_d后缀),反之亦然。混用会直接导致未解析外部符号或运行时崩溃。

4. 验证头文件与库文件版本一致

确保C/C++→附加包含目录中的Python头文件版本,和链接器→附加库目录中的库文件版本完全相同,版本不匹配会引发链接错误。

代码中需要修正的问题

除了配置问题,代码本身存在两处错误,也会导致编译/链接问题:

  1. Py_Initialze拼写错误,正确应为Py_Initialize
  2. 若使用Python 3.x,PyString_FromString已被废弃,需替换为PyUnicode_FromString

内容的提问来源于stack exchange,提问作者LakshyaK2011

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:42:49