如何解决操作系统错误[重复]
Posted
技术标签:
【中文标题】如何解决操作系统错误[重复]【英文标题】:how to solve the os errors [duplicate] 【发布时间】:2021-08-17 07:25:42 【问题描述】: 最近我一直在研究 Ctypes。我有一个.C
文件让我打电话
它ABC.C
。
它有很多功能我只需要调用它
使用Ctypes
在python中的Algorithm_Interface
函数。
我尝试使用gcc
创建一个.so
(类似于库文件)文件from geeks for geeks
源.gcc -fPIC -shared -o libfun.so ABC.c
通过使用该命令,在.C
源文件目录中。一个.so
文件被创建(libfun.so)。
在 python 中,我使用此代码调用该函数:
import ctypes
f=open( "data.txt","r")
Raw_file=f.read()
fun = ctypes.CDLL("D:/NR/SPO2/libfun.so")
fun.Algorithm_Interface.argtypes = [ctypes.c_int]
returnVale = fun.Algorithm_Interface(Raw_file)
当我尝试运行它时,它返回一个错误。
[WinError 193] %1 is not a valid Win32 application
如何解决?
【问题讨论】:
【参考方案1】:Windows 将 .dll 和 .exe 用于应用程序。 .so 是为不同的系统(如 Linux)编译的。
从外观上看,Python ctypes 使用常规的 Windows 函数,因此也只支持 .dll。
您需要一个生成 Windows 二进制文件的 gcc 版本来编译您的 C 源代码,然后才能在 Windows 上加载它。
有很多不同的 GCC for Windows 发行版,例如 Mingw。只需谷歌“GCC for Windows”。
安装基于 Windows 的 GCC 后,使用它代替当前的 gcc,但使用 libfun.dll 代替 libfun.so。
【讨论】:
DL 和 .SO 有什么不同 .SO 相当于 Linux 和类似系统上的 .DLL。两者都是共享库的实现,但在不同的平台上。 gcc --version gcc (MinGW.org GCC-6.3.0-1) 6.3.0 版权所有 (C) 2016 Free Software Foundation, Inc. 这是免费软件;查看复制条件的来源。没有保修;甚至不考虑适销性或特定用途的适用性。 “这就是你的意思吗”@marpor 是的,有效果吗? 如果您收到 same 错误,也可能是因为您混合使用了 32 位和 64 位版本。如果您运行的是 32 位 Python,它只会加载 32 位 DLL。因此,请确保您获得相同版本的 Python 和 GCC。以上是关于如何解决操作系统错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
VetorTest.java 使用未经检查且不安全的操作与 -Xlint 错误 [重复]