我想从 Python 导入 C 程序中的所有函数。我收到 OSError: [WinError 193] %1 不是有效的 Win32 应用程序

I want to import all the functions in C program from Python. I got OSError: [WinError 193] %1 is not a valid Win32 application

提问人:user22872177 提问时间:11/7/2023 最后编辑:kiner_shahuser22872177 更新时间:11/7/2023 访问量:47

问:

C文件;假设 func.c

#include <stdio.h>
int display(char* str, int age) {
    printf("Name %s age is %d",str,age);
    return 0;
}

在命令提示符下:gcc -fPIC -shared -o func.so func.c 将 c 文件转换为 .so,以便可以被 ctypes、cffi 等库调用。

main.py

import ctypes
from ctypes import *
clibrary = ctypes.CDLL(r"C:\Users\Desktop\func.so")
clibrary.display(b"hi", 22)

当我运行 main.py 时,出现错误:

Traceback (most recent call last):
  File "c:\Users\Desktop\main.py", line 14, in <module>
    clibrary = ctypes.CDLL(r"C:\Users\Desktop\func.so")
  File "C:\Users\AppData\Local\Programs\Python\Python38\lib\ctypes\__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
**OSError: [WinError 193] %1 is not a valid Win32 application**

我期待解决该错误your text

蟒蛇 c linux dll ctypes

评论

1赞 CristiFati 11/7/2023
您正在为 Nix 构建并尝试将其加载到 Win Python 中??这是行不通的。您是否正在使用模拟器(MinGWMSYS2Cygwin 等)?[SO] 的副本:Python Ctypes - 加载 dll 抛出 OSError:[WinError 193] %1 不是有效的 Win32 应用程序(@CristiFati的答案)
1赞 user22872177 11/7/2023
@CristiFati 谢谢你。我已经安装了 32 位 Python,它工作正常。

答: 暂无答案