pycharm Python 调用dll /.os 遇到的错误集合

 

 

python LoadLibrary [WinError 126] 找不到指定的模块

解决办法:引用的文件目录不对,

path1 = os.path.split(os.path.realpath(__file__))[0]  # 表示当前所处的文件夹的绝对路径

path1FileMZ = '%s%s' % (path1, '/Licence_DLL/xxx.dll')  # dll的文件地址

 

[WinError 193] %1 不是有效的 Win32 应用程序。

解决办法:windos对应版本的dll或者linux对应版本的.os

 

dll函数的例子:generate_license_file(char * onlycode, char* licenseName, char* companyname, char* email, char* phone, char* companyperson, char* effective, char *out)

 

 

C基本类型和ctypes中实现的类型映射表

 

ctypes数据类型C数据类型
c_charchar
c_shortshort
c_intint
c_longlong
c_ulongunsign long
c_floatfloat
c_doubledouble
c_void_pvoid

char* 对应的是c_char_c

在python声明如下

例:OnlyCode_A = c_char_p(str(OnlyCode).encode(encoding="utf-8")) #唯一码

str()的作用是转成str格式,如格式为str可以直接.encode(encoding="utf-8")

其中,要和dll或os约定好编码格式

 

接收返回值 char *out

定义一个空的容器来存放值

str_A = c_char_p(("").encode(encoding="utf-8"))#接收返回的值

str_A.value 的类型为bytes所以要转换成str

str_A =bytes.decode( str_A.value) #把bytes 转换成str

 

 

编码转换方法
按utf-8的方式编码,转成bytes

website_bytes_utf8 = website.encode(encoding="utf-8")
  • 1

2.按gb2312的方式编码,转成bytes

website_bytes_gb2312 = website.encode(encoding="gb2312")
  • 1

3.解码成string,默认不填

website_string = website_bytes_utf8.decode()
  • 1

4.解码成string,使用gb2312的方式

website_string_gb2312 = website_bytes_gb2312.decode("gb2312")

注意:

调用过程中最好用try: except BaseException  as err: print("错误==",err) 来获取异常

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值