如何解决操作系统错误[重复]

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 错误 [重复]

邮件发送错误c# [重复]

如何解决此科尔多瓦构建错误?

如何解决子重复错误?

Ionic Cordova 使用 Gradle 构建 Android 错误并且构建失败 [重复]

使用未经检查或不安全的操作,使用 -Xlint 重新编译:未检查详细信息 [重复]