开发者您好,我电脑win11 64位系统,python版本是3.12.0 已经正确安装gmssl和gmssl-python如下: ``` >>> import gmssl >>> gmssl.GMSSL_PYTHON_VERSION '2.2.2' >>> gmssl.GMSSL_LIBRARY_VERSION 'GmSSL 3.1.1 Dev' ``` 我在测试example文件夹下的例程时,sm3.py和sm4.py运行正常,sm2_key.py运行时报错如下: ``` File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\gmssl.py", line 436, in export_encrypted_private_key_info_pem if gmssl.sm2_private_key_info_encrypt_to_pem(byref(self), c_char_p(passwd), c_void_p(fp)) != 1: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ OSError: exception: access violation writing 0x0000000000000024 ``` 在网上搜索该错误一直没找到解决办法,特在此提问,烦请进行解答,感谢
Activity
zhangyongann commentedon Oct 20, 2023
补充更详细的系统信息:
系统类型:64 位操作系统, 基于 x64 的处理器
版本:Windows 11 专业版 22H2
python版本信息:
0xHyperia commentedon Oct 25, 2023
解决了吗?
Beitadoge commentedon Nov 16, 2023
同样的版本,我也遇到了这个问题,请问解决了吗?
r1is commentedon Nov 17, 2023
我也遇到了这个问题,请问解决了吗
Jinkeee commentedon Nov 22, 2023
遇到相同的问题了。请问解决了吗?
sqs404 commentedon Dec 31, 2023
sm2和sm9的examples都用不了,我也是这个问题
KKKGod commentedon Jan 10, 2024
使用ctype和python指针交互出问题了 等开发者处理吧
j-z10 commentedon Mar 28, 2024
降低GmSSL版本到 v3.1.1yujingyue9166 commentedon Mar 29, 2024
GmSSL 是3.1.1 依然是同样的问题
Traceback (most recent call last):
File "sm2_key.py", line 13, in
sm2.export_encrypted_private_key_info_pem('sm2.pem', 'password')
File "D:\anaconda3\lib\site-packages\gmssl.py", line 432, in export_encrypted_private_key_info_pem
if gmssl.sm2_private_key_info_encrypt_to_pem(byref(self), c_char_p(passwd), c_void_p(fp)) != 1:
OSError: exception: access violation writing 0x0000000000000024
Zhanghanhan1 commentedon Mar 29, 2024
可是装的就是3.1.1
j-z10 commentedon Mar 30, 2024
看起来是windows下 pem_write 和 pem_read 导致的问题,我这个PR针对windows做了临时处理,把这一步放在python里面执行
你们可以参考一下 j-z10/pygmssl#9
ferstar commentedon Oct 18, 2025
✅ 问题已修复
你好,感谢报告这个问题!
这个 Windows 平台的
access violation错误已经在 PR #26 中完全修复:#26
🔧 修复内容
根本原因:
Windows 平台 FILE* 指针无法跨 DLL 边界传递,且 ctypes 参数传递存在双重包装问题。
修复方案:
c_char_p参数的双重包装问题测试验证:
sm2_key.py等所有示例程序📦 如何测试修复
方式 1: 直接安装预编译包(最快,推荐)
```bash
Windows (Python 3.8-3.14)
pip install https://github.com/ferstar/GmSSL-Python/releases/download/v2.2.2/gmssl_python-2.2.2-py3-none-any.whl
```
下载链接:https://github.com/ferstar/GmSSL-Python/releases/tag/v2.2.2
方式 2: 从源码安装
```bash
git clone https://github.com/GmSSL/GmSSL-Python.git
cd GmSSL-Python
git fetch origin pull/26/head:pr-26
git checkout pr-26
pip install -e .
```
方式 3: 等待 PR 合并后
```bash
pip install --upgrade gmssl-python
```
🎁 额外改进
PR #26 还包含了其他重大改进:
欢迎测试反馈!