我一直在尝试将一些编译好的c代码包含到我的python代码中,如下所示:
from ctypes import CDLL
import os
absolute_path = os.path.dirname(os.path.abspath(__file__))
# imports the c library
test_lib_path = absolute_path + '/theories/test.so'
test = CDLL(test_lib_path)
.so文件是通过编译test.c文件(其中不包含任何代码)并执行以下命令创建的:gcc -o theories/test.so -shared -fPIC -O2 test.c
我希望这会将编译后的代码加载到python程序中,以便我可以使用它,但是我得到了以下错误:OSError: [WinError 193] %1 is not a valid Win32 application
据我所知,这意味着我编译的代码与我的操作系统不兼容,但我不知道哪里会出错(如果有帮助的话,使用VS 2022)。
应该是你的python版本是64位的,.so文件是32位的
先检查python版本
- 将python版本修改为与。so文件相同。
- 重新编译并生成与python版本一致的。so文件。
你可以试试
# 64bit
gcc -m64
# 32bit
gcc -m32