python 报reading location 0x00000000 40C

由于对python不太熟悉,需用python调用dll;
现有dll接口函数:business_handle(char in, char * out)
下面代码cmd正常运行,打包后报:Access violation reading location 0x00000000
outputData=ctypes.create_string_buffer('/0'*100)

business_handle = self._libc.BUSINESS_HANDLE

business_handle.argtypes=[ctypes.c_char_p,ctypes.c_char_p]
business_handle.restype=ctypes.c_int

business_handle(inputData,outputData)

有哪位大神帮忙写个能正常调用的例子!

3个回答

找了个例子,可以执行

 import platform
from ctypes import *

if platform.system() == 'Windows':
    libc = cdll.LoadLibrary('msvcrt.dll')
elif platform.system() =='Linux':
    libc = cdll.LoadLibrary('libc.so.6')

libc.printf('Hello ctypes!\n')

结果

 C:\Users\BJWUYBDNW\Desktop>python a.py
Hello ctypes!

C:\Users\BJWUYBDNW\Desktop>
zfq_java
zfq_java 需要那种,带指针出参的
大约 2 年之前 回复

C代码 生成 csdndll1.dll

#include <windows.h>
int GenNChar(char c, int N,char* out, int out_len)
{
    if (N > out_len)
    {
        return 1;
    }
    int i;
    for (i = 0; i < N; i++)
    {
        out[i] = c;
    }
    out[i] = 0;
    return 0;
}
BOOL WINAPI DllMain(_In_ HANDLE _HDllHandle, _In_ DWORD _Reason, _In_opt_ LPVOID _Reserved)
{
    return TRUE;
}

python代码a.py:

import platform
from ctypes import *

if platform.system() == 'Windows':
    libc = cdll.LoadLibrary('msvcrt.dll')
    mylib = cdll.LoadLibrary('E:/ronggf/develop/cpp/csdndll1/x64/Release/csdndll1.dll')
    s = create_string_buffer('\000' * 32)
    mylib.GenNChar(c_char('a'),10,s,32)
    libc.printf("result=%s\n",s)

输出结果:

C:\Users\BJWUYBDNW\Desktop>python a.py
result=aaaaaaaaaa

C:\Users\BJWUYBDNW\Desktop>

这样就OK

import platform
from ctypes import *

if platform.system() == 'Windows':
libc = cdll.LoadLibrary('msvcrt.dll')
elif platform.system() =='Linux':
libc = cdll.LoadLibrary('libc.so.6')

libc.printf('Hello ctypes!\n')
结果

C:\Users\BJWUYBDNW\Desktop>python a.py
Hello ctypes!

C:\Users\BJWUYBDNW\Desktop>

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Access violation reading location 0x00000000

<br />Access violation reading location 0x00000000<br /> <br />首先解释一下这种错误,意思是:违反规则访问地址为0x00000000的内存,并且你没有处理这个异常。<br />   一般来说,这种错误产生的原因是:你使用了没有初始化的指针,或者说你初始化NULL,但它没有被赋予实际的值。例如:View*pView=NULL; pView->Update();此时你便会遇到这种错误。你要想解决这种错误,就要找到它的位置。对于MFC程序,你肯定是因为

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x......

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x...... 对于C++初学者或粗心者,很容易犯如下图所示错误: 那么该错误是由什么造成的呢? 答案无疑只有一个,即:读取了本该没有的值或者地址。 那么如何

itk 读图像 c++ 0xC0000005: Access violation reading location 0x00000000 出错总结

int main () { int * p=NULL; int a; a=p[0]; cout } 这个例子大家一定看明白了。就是因为我们定义了一个空指针。但是我们去访问的元素。 但是有时大家可能会遇到这样一个问题觉得你初始化了。昨天我们在使用itk的时候也遇到这个问题 一下贴出itk代码 std::string inputFilename; ty

Access violation reading location 0xccccccc0运行异常的解决方法

转自:http://blog.csdn.net/michealmeng555/article/details/6452697 编译过运行时出现如下错误     Access violation reading location 0xccccccc0     单步调试,发现时delete一个指针变量时出现的错误,错误原因是因为delete了一个没有new的指针变量。    

OpenCV特征检测出现Unhandled exception at……Access violation reading location 0x00000000.

OpenCV版本为2.4.12,Visual Studio 开发环境中运行。 在图像特征检测、匹配中出现了运行错误: Unhandled exception at 0x569D1C00 (opencv_features2d2412d.dll) in Macher.exe: 0xC0000005: Access violation reading location 0x00000000.

0xC0000005: Access violation reading location 0x00ef1000.

Unhandled exception at 0x00932752 in cudaProject.exe: 0xC0000005: Access violation reading location 0x00ef1000. 访问出界,你还在访问。 例如: 一个数组10个元素 但你访问11个 就会异常

关于出现Unhandled exception at 0x091f11c7 in ****: 0xC0000005: Access violation reading location 0x0ab0f

原文地址 崩溃信息 Unhandled exception at 0x091f11c7 in : 0xC0000005: Access violation reading location 0x0ab0f6cc. 这样的崩溃信息,从字面上看, 就是  0xC0000005 这个地址的东西是不允许访问的。 至于什么情况下会出现这个错误呢? 之前问过一个这样的问题,当时

OSError: exception: access violation writing,

在使用python3.5_x64,ctype调用c++的.so文件时持续出现了OSError: exception: access violation writing 0x....... 的问题。定位的出错语句是:pthread_create(&amp;amp;pt[threads], NULL, getBatch, (void*)(&amp;amp;para[threads]));简单地说就是将线程指针pt[t...

关于瞎报Access violation writing location异常的瞎解决方法

关于瞎报Access violation writing location异常的瞎解决方法 本文原创,可随意探讨,转载请注明出处(到地址栏复制一下),如果对你有帮助的话给我点个赞开心一下,谢谢。 关于瞎报Access violation writing location异常的瞎解决方法 问题描述 解决办法 问题描述 最近在用OpenCV解决一些CV问题。嗯,VS...

EXCEPTION_ACCESS_VIOLATION

http://203.208.39.99/search?q=cache:euv39jJOmSoJ:www.pboa.cn/archiver/showtopic-55.aspx+tomcat+EXCEPTION_ACCESS_VIOLATION+(0xc0000005)&hl=zh-CN&ct=clnk&cd=13&gl=cn&st_usg=ALhdy2_cWrH3K_y4YA4PJMfsv93kl

access violation reading 0x0000000000000020

access violation reading 0x0000000000000020原因:再次使用之前应该先释放一下内存:av_freep(aviobuffer);//printf(&quot;restart 4&quot;);aviobuffer = (unsigned char *)av_malloc(32768);代码:在下面:int play_file(char* file_name, FrameFunc ...

动态调用DLL函数有时正常,有时报Access violation的异常

__stdcall/__cdecal/__fastcall 定义导出函数的重要性

Access violation reading at memory location xxx初探)

前段时间用C++写了一个DXF的转换程序,把DXF格式的图形数据转换为ESRI Personal GeoDatabase格式的MDB文件,我平时用C++写程序不多,所以对自己写的程序不是特别放心。在调试状态下跑了跑,工作正常,但是Output窗口中有很多“Microsoft C++ Exception”的东东,主要有如下两类:First-chance exception at 0x7c812a5b

Unhandled exception at 0x008f9b82 in .exe: 0xC0000005: Access violation reading location 0x00000298.

对于C++初学者或粗心者,很容易犯如下图所示错误: 那么该错误是由什么造成的呢? 答案无疑只有一个,即:读取了本该没有的值或者地址。 那么如何解决呢? 第一件事,检查下你传入的参数是否合法; 第二件事,若malloc了一块内存,必须记得free; 第三件事,你是否赋值了已经溢出的值或地址。 举例说明:

sublimetext2 中运行Python提示EOFError: EOF when reading a line

要sublimeText2中编译运行Python文件时,如果代码中带有需要用户输入的函数时(raw_input/input)会提示以下错误 EOFError: EOF when reading a line 解决方法: 一、安装sublimeREPL     打开sublimeText2按CTRL+SHIFT+P,英文版输入:install后选择Package Control: Ins

何解决这样的错误 EXCEPTION_ACCESS_VIOLATION

   ## An unexpected error has been detected by Java Runtime Environment:##  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c342eee, pid=1052, tid=2244## Java VM: Java HotSpot(TM) Client VM (10.0

scrapy [boto] ERROR: Caught exception reading instance data URLError: <urlopen error [Errno 10051] >

执行过程中出现错误:2015-09-09 11:13:26 [boto] DEBUG: Retrieving credentials from metadata server. 2015-09-09 11:13:27 [boto] ERROR: Caught exception reading instance data Traceback (most recent call last): Fi

Access violation reading location 0x00000000是什么错误呢?

这种错误的意思是:违反规则访问地址为0x00000000的内存,并且你没有处理这个异常。 一般来说,这种错误产生的原因是:使用了没有初始化的指针,或者说初始化NULL,但它没有被赋予实际的值。 所以使用指针的时候应该注意这个问题!

python subprocess命令行调用py文件 报错EOFError: EOF when reading a line (已解决)

今天写一个监控程序,当服务器的某个程序不在的时候,监控程序启动它。遇到了两个问题,       1.  sudo: sorry, you must have a tty to run sudo   (我是root用户启动的程序,命令行调用的时候加了sudo,报错了)       2.  EOFError: EOF when reading a line      遇到这个错误是因为,我调用的那个p

Unhandled exception at 0x00000000 in CallDll.exe: 0xC0000005: Access violation reading location 0x00

有可能是函数名不对,导致找不到函数,从而报错。

Part1: Overcome the ‘Access Violation Exception’ in the FFMPEG

Normal 0 false false false MicrosoftInternetExplorer4 <object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" i

内存错误 未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

其他:内存错误 未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 关于0xC0000005问题: 0xC0000005: Access Violation错误调试- - 1》数据越界或是定义的指针未释放. 2》空的指针的可能性最大。使用指针前最好能显式的赋值!  应该是指针的问题 3》内存访问错误,检查指针,是否为空,是

Windows系统运行VirtualBox一直出现0x00000000指令引用的0x00000000内存该内存不能为written

背景:Windows 7系统安装VirtualBox软件,并在软件中运行linux操作系统。 问题描述:运行VirtualBox时,总是出现0x00000000指令引用的0x00000000内存该内存不能为written。 解决方法:勾选启用 PAE/NX (设置->系统->处理器) 希望能分享我的经验,同时也希望各位读者验证下方法的正确性!

error reading tld listeners java.lang.nullpointerexception异常

tomcat启动错误解决方案:用旧版的commons-logging-1.0.4.jar替换当前使用commons-logging-1.1.1.jar。这里提供一个下载地址,该链接不保证可以长久使用,可以到jar下载网站http://www.jar114.com :http://mirrors.ibiblio.org/pub/mirrors/maven/commons-loggin

Apktool反编译错误问题解决方法

在使用Apktool反编译时出现如下问题: I: Baksmaling... I: Loading resource table... Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file         at brut.androlib.res.decoder.AR

Qt 数据库 0x00bf56f7 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

调试了一星期,明明2段相同的代码,放一起就有一段不行了。后来发现demo里的QsqlDatabase是放在main文件里的,才醒悟到可能会是这个原因。Qt只允许打开一个QsqlDatabase,哪怕在不同的类里用不同的QsqlDatabase实例也不行。所以要使用QSqlRelationalTableModel的时候特别要注意,因为这时候是不能close QsqlDatabase的。 当他和QS

Sublime2编译Python程序EOFError:EOF when reading a line解决方法

在Sublime2中编译运行Python文件时,如果代码中包含用户输入的函数时(eg. raw_input()),Ctrl+b编译运行之后会提示以下错误: 解决方法:安装SublimeREPL 打开Sublime Text2编辑器,按 Ctrl+Shift+p,输入install,选择Package Control: Install Package,接着输入sublimeREPL,回车

oracle vm virtualbox安装 ubuntu出现 x00000000内存错误

最近发现在电脑中运行VirtualBox虚拟机,总是提示0x00000000错误“0x00000000指令引用的0x00000000内存该内存不能为written,”,如下图: 这是由于这是由于系统主题被破解,而VirtualBox会调用uxtheme.dll,才出现以上问题。对此不妨使用以下方法来解决。 1、若是Win7 64位系统,则运行UniversalThemePatcher

OSError: exception: access violation reading 0x0000000000000001

File &quot;D:\Users\Administrator\Miniconda3\envs\python36\lib\ctypes\__init__.py&quot;, line 492, in string_at    return _string_at(ptr, size)OSError: exception: access violation reading 0x0000000000000001参考:h...

tomcat自动关闭JDK异常退出 EXCEPTION_ACCESS_VIOLATION

神了  搜了一下貌似遇到问题的人还不少 刚开始用的1.6u30,发现异常,然后回到1.6u22版本 还是会自动退出 看了下自动记录的日志 类似hs_err_pidXXX.log(在tomcat路径下) 发现每次报错的地方还都不一样。。 不知道是不是系统的问题,因为安装了deepin lite xp 6.2可能少支持? 还是tomcat版本和后续JDK不兼容。。。 记下备用 # # A fat

Python IOError: File not open for writing

p = open('python1.csv','wb') 注意后面‘wb’,没有这个关键字就会提示错误!!!

【自己总结】Sublime2编译Python程序EOFError:EOF when reading a line解决方法

sublime2运行用户输入数据程序:  代码: a=raw_input("input a:") b=raw_input("input b:") if a>b: print (a+">"+b) elif a==b: print (a+"="+b) else: print (a+" 运行时,出错: ------------------------Traceb

WebView 报 Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3777 (WebViewCoreThre)

报错描述:使用WebView加载页面,点击网页中的某个按钮触发js,每次启动应用第一次点击该按钮的时候都会重新启动WebView ,第二次点击正常.很影响用户体验. log: Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3777 (WebViewCoreThre) 解决方法:设置WebView控件      mW

(2)Sublime Text3 中运行Python提示EOFError: EOF when reading a line

要在sublime Text3中编译运行Python文件时,如果代码中带有需要用户输入的函数时(raw_input)会提示错误:EOFError: EOF when reading a line

virtualbox 安装centos出现:0x00000000指令引用的0x00000000内存该内存不能为written

网上一大堆解决方法都试了,最后还是时不时突然崩溃,决定用VMware 安装CentOS7了。这种问题不用花时间纠结,果断换VMware转:VMware Workstation Pro v14.0下载及永久激活密钥【注】安装CentOS 7过程中,网络连接选择NAT,虚拟机和主机互通,同时可以将文件从Windows直接拖拽到CentOS桌面 或者 通过scp命令传输...

解决VirtualBox虚拟机内存0x00000000不能为written问题

使用虚拟机VirtualBox的时候,提示内存0x000000000不能为written,原因是宿主机主题被破解导致,解决办法是恢复三个主题文件,恢复成微软原件。themeservice.dll、themeui.dll、uxtheme.dll 就这三个文件!本压缩包包含32位win7和64位win7。绝对原汁原味!原件!

mysql在新电脑上安装出现could not access network location……解决方法

This is probably cruft left behind by the HP OEM imaging process. Tofix it, go into regedit and look in the registry under these two keys: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Cu

0x00000000 处有未经处理的异常: 0xC0000005: 在位置 0x0000000000000000 发生访问冲突

不管了,先上一张图: 经过半天的查找,终于找到了问题所在,以下是详情: 在一个线程函数中调用了动态库,hInst = LoadLibrary("mydll/mydll.dll");然而这个库是win32debug的,所以win64debug运行时就报以上错误。 但是win32运行又有以下问题: 这个程序本来是在一台windows32位电脑上,现在拿到我的windows6

Sublime2编译Python3程序EOFError:EOF when reading a line解决方法

还是sublime2 编写python中出现的问题。上一篇blog中解决了utf8编码的错误。这次因为有input这个函数还会出现一个“EOFError:EOF when reading a line“ 这里我们需要为sublime2添加一个插件(这也是sublime2的强大之处) 在Sublime2中编译运行Python文件时,如果代码中包含用户输入的函数时(eg. input()),Ctr

python redis pipeline报ConnectionError

import redis conn = redis.Redis(host='172.28.12.177',port=19230,db=0) >>> conn.setnx('heheda', 0) True >>> pipe = conn.pipeline() >>> pipe.expire('hehe', 60) Pipeline>> >>> pipe.incr('hehe')

EOFError: EOF when reading a line错误解决

解决EOFError: EOF when reading a line 解决选择Package Control 的时候 报错There Are No Packages Available For Installation 解决ModuleNotFoundError: No module named ‘requests’ pyCharm注册码 解决EOFError: E...

Python使用paramiko进行远程交互

import sys, getopt import paramiko,socket import Queue import threading import time import operator import re from bcolors import bcolors servers = open("").readlines() servers = [s.strip

关于ORACLE PLSQL读文件

转自:http://www.oracle.com/technology/obe/obe9ir2/obe-cnt/plsql/plsql.htm都说读书不求甚解害死人,一点也不错,最近我从网上淘到关于ORACLE如何从数据库目录下读文件,于是就用于生产了,结果上了生产,程序死活就是跑不出来,原因是我们的服务器做了REC,如果在两台机器上找一个目录呢,以前呢在自己的程序里把路径写死了,在一般服务器

apktool反编译的一些问题

项目中用到Android apk反编译重打包,可在用apktool遇到了一些问题,今天抽时间把问题总结下; (1)我最初用的apktool版本为1.5.2,在反编译时偶尔报错如下: 2014-12-11 13:46:29        I: Baksmaling... 2014-12-11 13:46:35        I: Loading resource table... 201

Error reading tld listeners java.lang.NullPointerException异常的解决方法

我想在tomcat中,启动spring容器,但是初始化老是报错 2007-3-26 11:16:22 org.apache.catalina.core.StandardHost start 信息: XML validation disabled log4j:WARN No appenders could be found for logger (org.apache.catalina.startu

VirtualBox中安装Ubuntu16.04后总是弹出0x00000000错误,怎么破?

按照网上搜到教程一步一步安装,没有任何问题,所以我肯定淘宝卖家给我的光盘和iso系统有问题,害我折腾了很久不成功!愤怒! 本以为一切都开始很顺利啦,结果就出现了下图 bing了很久,也没有查到原因,有人说是win7盗版的原因,让下个软件恢复下就好了,但是我照做之后发现我的那个恢复按钮就是灰色的,也不知道是怎么回事! 唉,好曲折的学习历程啊! 暂时这个问题无解了,只能碰到就重新打开U

"Error reading from file" 解决办法

 今天正开发的好好的,忽然公司突然断点,不正常关机后,导致了 get last version 操作提示 "Error reading from file" 而不能正常工作。上网搜索后,找到解决办法如下: 1. 删除 vss/data/backup 目录2. 在命令行下,转到 vss/win32 下运行如下命令:   analyze -f //neil/vss/data   (

I/O error reading PNG header! java截取png图片时遇到的问题

解决方法 红色框的代码换成下方那句话 Iterator it = ImageIO.getImageReaders(new FileImageInputStream(new File(srcpath)));

javafx从fxml获取Parent报出location is required Exception

这里点击运行后会报出一个错误 Caused by: java.lang.NullPointerException: Location is required.

vss error reading from file 解决方法

vss error reading from file 解决方法 1 若服务器中存在 vss/data/backup目录,请将该目录删掉 2 运行cmd cd.. cd C:\Program Files\Microsoft Visual SourceSafe 3 在命令行输入本机vss的安装路径,如C:\Program Files\Microsoft Visual SourceSafe的

立即提问
相关内容推荐