![Python3调用C程序 OSError:[WinError 193]%1不是有效的Win32应用程序,第1张 Python3调用C程序 OSError:[WinError 193]%1不是有效的Win32应用程序,第1张](/aiimages/Python3%E8%B0%83%E7%94%A8C%E7%A8%8B%E5%BA%8F+OSError%EF%BC%9A%5BWinError+193%5D%EF%BC%851%E4%B8%8D%E6%98%AF%E6%9C%89%E6%95%88%E7%9A%84Win32%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
格式
- gcc 原文件名.c -shared -o 新文件名.so
- 以将c_dll.c编译为c_dll.so为例
gcc c_dll.c -shared -o c_dll.so
示例
- from ctypes import *
格式
- 变量名 = cdll.LoadLibrary("动态库文件路径")
示例
- result = cdll.LodaLibrary("./c_dll.so")
格式
- 动态库引用.库函数(参数)
示例
- result.my_add(num)
附源码:
c_add.py
import time
from ctypes import *
def main():
num = int(input("请输入整数值:"))
result = 0
start_time = time.time()
result = cdll.LoadLibrary("./c_dll.so")
result.my_add(num)
end_time = time.time()
print("总共用时%s"%(end_time-start_time))
if __name__ == "__main__":
main()
c_dll.c
#includevoid my_add(int num){ long int result = 0; for (long int i=1; i<=num; i++){ result += i; } printf("从1到%d累加的计算结果为%ldn",num,result); }
最终文件目录
python_add.py
import time
def main():
num = int(input("请输入整数值:"))
result = 0
start_time = time.time()
for i in range(num+1):
result += i
print("从1到%d累加的计算结果为%d"%(num,result))
end_time = time.time()
print("总共用时%s"%(end_time-start_time))
if __name__ == "__main__":
main()
注意:如果用64位python调用so文件的话,在windows上要用mingw64进行编译,不然跨平台会报错 OSError:[WinError 193]%1不是有效的Win32应用程序。其他内容转载自下面作者。
作者:zhaoolee
链接:https://www.jianshu.com/p/edb8698d1374
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)