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

从C文件生成.so共享库文件,Windows下执行cc命令报错如何解决?

原命令适用环境

你查到的编译命令默认适用于类Unix操作系统(包括Linux、macOS、BSD等):

  • 这类系统通常默认预安装了GCC或Clang C编译器,cc是系统指向默认C编译器的通用软链接
  • -fPIC是类Unix平台下生成位置独立代码的专用参数,是编译共享库的必要选项
  • .so是类Unix平台下共享库的标准后缀

Windows原生环境没有内置C编译器,也不存在cc系统指令,因此直接运行会触发命令不存在的报错。

Windows平台生成可被Python调用的C动态库的方案

你可以根据使用场景选择以下任意一种方案:

  • 方案1:使用WSL(Linux子系统)
    开启WSL功能后安装任意Linux发行版,在WSL终端内可以直接运行原教程的编译命令,生成的.so文件可在WSL环境内的Python直接调用,无法给原生Windows环境的Python使用。
  • 方案2:使用MinGW-w64编译器
    安装MinGW-w64并将其bin目录添加到系统环境变量PATH后,在终端执行以下命令生成Windows兼容的动态库:
    gcc -shared -o my_functions.dll my_functions.c
    MinGW环境下不需要添加-fPIC参数,生成的.dll文件可以直接给原生Windows环境的Python调用。
  • 方案3:使用MSVC(Visual Studio编译器)
    安装Visual Studio的桌面C++开发组件后,打开VS专用的开发者命令提示符,执行以下命令生成dll:
    cl /LD my_functions.c /Fe:my_functions.dll
Python跨平台调用兼容写法

如果需要代码兼容多平台,可以通过判断系统类型加载对应动态库:

import ctypes
import os
import platform

system = platform.system()
if system == "Windows":
    lib = ctypes.CDLL(os.path.abspath("my_functions.dll"))
else:
    lib = ctypes.CDLL(os.path.abspath("my_functions.so"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:15:03