Python 调用C++ dll库文件函数提示WindowsError: exception: access violation writing 0x00905A4D

.H文件如下:
/*
视频解码
*/
#ifndef __BLL_AUTELVIDEODECODE_H
#define __BLL_AUTELVIDEODECODE_H

#ifdef AUTELVIDEODECODE_EXPORTS
#define AUTELVIDEODECODE_API __declspec(dllexport)
#else
#define AUTELVIDEODECODE_API __declspec(dllimport)
#endif

#include "bll/UDPClient/UDPAsyncClient.h"
#include "bll/DataManager/DataManager.h"
#include "bll/Utils/CommonFuntion.h"
#include "bll/frame.h"
#include "bll/video_data_mgn.h"
#include "bll/h264.h"

extern "C"
{
//编码
#include "libavcodec/avcodec.h"
//封装格式处理
#include "libavformat/avformat.h"
//像素处理
#include "libswscale/swscale.h"

#include "libavutil/avutil.h"
#include "libavutil/imgutils.h"
};

#pragma comment(lib,"avutil.lib")
#pragma comment(lib,"avformat.lib")
#pragma comment(lib,"avcodec.lib")
#pragma comment(lib,"swscale.lib")

#define VIDEO_UDP_PORT (1234)
#define min(a, b) ((a) < (b) ? (a) : (b))

#define MAX_RECVBUF_SIZE (64 * 1024)
#define MAX_FRAME_SIZE (1024 * 1024)

#pragma pack(push, 1)

struct Decoder {
AVCodec *codec;
AVFrame *frame;
AVCodecContext *dec_ctx;
};

typedef struct {
uint8_t *data;
int size;
int64_t pts;
int keyframe;
int decode_only;
} VideoPacket;

typedef struct {
int width;
int height;

int64_t pts;

int keyframe;
int decode_only;

int opaque;

uint8_t *data;
int      size;

} YuvFrame;

#pragma pack(pop)

typedef void (WINAPIV *yuvFrame_func)(YuvFrame *yuv);

class AUTELVIDEODECODE_API CAutelVideoDecode
{
public:
explicit CAutelVideoDecode(std::string strHost="", int nPort=VIDEO_UDP_PORT);
~CAutelVideoDecode(void);

inline void SetYuvframeCallback(yuvFrame_func pfn) {
    m_pfnyuvFrame = pfn;
}

//functions
private:
//通过udp实时获取视频数据包线程
void StartRecvPacketThread();
void StopRecvPacketThread();
static int WINAPIV recv_video_data_func(char* buf, int length, void* ctx, void* pObj);
void DoRecvPacket();
static DWORD ThRecvPacket(LPVOID lpParam);

//从buf里面读取视频帧数据进行渲染线程
void StartRenderThread();
void StopRenderThread();
void DoRenderFrame();
static DWORD ThRenderFrame(LPVOID lpParam);


Decoder *Decoder_Create(void);
int Decoder_Destroy();
int Decoder_Decode(VideoPacket *inpkt, YuvFrame *frame);
int get_video_frame(AVFrame *frame, YuvFrame *yuv);
void PushFrame(YuvFrame frame);
YuvFrame FrontFrame();

//params
private:

//通过udp实时获取视频数据包线程
HANDLE m_hRecvVideoPacket;
bool m_bStopRecvVideoPacket;

//从buf里面读取视频帧数据进行渲染线程
HANDLE m_hRenderFrame;
bool m_bStopRender;

CUDPAsyncClient *m_pUdpClient;
std::string m_strHostAddr;
int m_udpPort;

Decoder *m_pDecoder;
yuvFrame_func m_pfnyuvFrame;

typedef std::queue<YuvFrame> QUEUE_YUVFRAME;
QUEUE_YUVFRAME m_que_yuvframe;
CRITICAL_SECTION m_cri_yuvFramequeLocker;

};

#endif

CPP文件
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "AutelVideoDecode.h"

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}

return TRUE;

}

extern "C"
{
AUTELVIDEODECODE_API CAutelVideoDecode* AutelVideoDecode() { return new CAutelVideoDecode(); }
AUTELVIDEODECODE_API void SetYuvframeCallback(CAutelVideoDecode* pAutel, yuvFrame_func pfn) { pAutel->SetYuvframeCallback(pfn); }
}

#####编译成AutelVideoDecode.dll库后供python2.7程序调用。

####Python程序如下
import sys,pygame
import YUVFrame
import thread
from ctypes import *
ObjAutelvideodecodeDLL = windll.LoadLibrary(".\bin\autelvideodecode.dll")
class AutoTestAutelRealTimeVideo:
def init(self):
pygame.init()
self.size = width, height = 1280, 720
self.black = 0, 0, 0
self.YUVFrame = None
self.overlay =None
self.IYUV = pygame.IYUV_OVERLAY
self.lock = thread.allocate_lock()
CALLFUCTION = CFUNCTYPE(None, POINTER(YUVFrame.YUVFrame))
self.PrenderYuvframe = CALLFUCTION(self.renderYuvframe)
#ObjAutelvideodecodeDLL.AutelVideoDecode.argtype=c_char_p
ObjAutelvideodecodeDLL.AutelVideoDecode.restype = c_void_p
ObjAutelvideodecodeDLL.SetYuvframeCallback.argtypes = (c_void_p,c_void_p)
#ObjAutelvideodecodeDLL.SetYuvframeCallback.restype = None
self.AutelObj = ObjAutelvideodecodeDLL.AutelVideoDecode()
def ......

编译后出错:
Connected to pydev debugger (build 129.782)
Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 2.7.3\helpers\pydev\pydevd.py", line 1481, in
debugger.run(setup['file'], None, None)
File "C:\Program Files (x86)\JetBrains\PyCharm 2.7.3\helpers\pydev\pydevd.py", line 1124, in run
pydev_imports.execfile(file, globals, locals) #execute the script
File "E:/AutoTestAutelRealTimeVideo/AutoTestAutelRealTimeVideo.py", line 84, in
test()
File "E:/AutoTestAutelRealTimeVideo/AutoTestAutelRealTimeVideo.py", line 66, in test
test = AutoTestAutelRealTimeVideo()
File "E:/AutoTestAutelRealTimeVideo/AutoTestAutelRealTimeVideo.py", line 25, in init
self.AutelObj = ObjAutelvideodecodeDLL.AutelVideoDecode()
WindowsError: exception: access violation writing 0x00905A4D

c++
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
poi导入exce到数据库,两次导入相同的数据,如何判断导入第二次的时候只更新
-
.NET 基于Office excel 转 word 怎么实现,求大神指教
-
JS的: Cannot read property 'value' of undefined
-
Android 以一段字符串为分割点分割另一段字符串
-
action调用service无限报空指针,试了很多方法都没用
-
java poi excel导出怎么制作标题
-
java.lang.NoSuchFieldError: STANDARD_NUMBER_TYPES
-
一个关于Android编成问题
-
jboss-eap的发布项目的问题,报了很多错误,不知道是什么原因。
-
delphi 7 执行有返回参数的oracle存储过程
-
求助各位大神LIstfragment中,分线程获取数据后刷新界面崩溃,用分线程加载数据后
-
EXCE小问题,类型不匹配,请解答
-
最近碰到dubbox 里面添加filter的问题,网上找了下,也没有啥效果,想问问有谁也碰到过?
-
exe ,Excel共同访问一个COM怎么实现
-
今天我们项目weblogic突然死掉了,各位帮忙诊断下!
-
求mfc 读写Excel的类,可以支持wps表
-
关于ThreadLocal的一个测试 大神 帮我看下 为什么run方法里面找不到对象 (为了方便 我把他们都写到一个类中)
-
谁能提供一个收取邮件的例子(要能解决乱码的!)
-
程序员实用工具网站
目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、在线工具宝典大全 程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎,不会收集私人信息,保...
史上最详细的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)
网上很多整合SSM博客文章并不能让初探ssm的同学思路完全的清晰,可以试着关掉整合教程,摇两下头骨,哈一大口气,就在万事具备的时候,开整,这个时候你可能思路全无 ~中招了咩~ ,还有一些同学依旧在使用eclipse或者Myeclipse开发,我想对这些朋友说IDEA 的编译速度很快,人生苦短,来不及解释了,直接上手idea吧。这篇文章每一步搭建过程都测试过了,应该不会有什么差错。本文章还有个比较优秀的特点,就是idea的使用,基本上关于idea的操作都算是比较详细的,所以不用太担心不会撸idea!最后,本文
从入门到精通,Java学习路线导航
引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧。 Java学习路线 当然,这里我只是说Java学习路线,因为自己就是学Java的,对Java理当很熟悉,对于其它方面,我也不是很了解。 基础阶段 首先是基础阶段,在基础阶段,我们必须掌握Java基础,Mysql数据库,Ora...
鸿蒙 OS 的到来,能为我们改变什么?
作者 | 屠敏 出品 | CSDN(ID:CSDNnews) 「鸿蒙初辟原无姓,打破顽空需悟空」,在国产自研操作系统短缺的窘境之下,天惊一声雷,「鸿蒙」踏风来。 回首上个月的技术圈,最值得业界浮称流说的无疑是 8 月 9 日华为开发者大会 2019(简称 HDC 2019)上公开的「鸿蒙 OS」。作为一款基于微内核的全场景分布式 OS,「鸿蒙 OS」肩负打破传统 IoT 操作系统的责任,同时也成...
100 个网络基础知识普及,看完成半个网络高手
1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 3)什么是骨干网? 骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。 4)什么是 LAN? LAN 是局域网的缩...
C语言实现推箱子游戏
很早就想过做点小游戏了,但是一直没有机会动手。今天闲来无事,动起手来。过程还是蛮顺利的,代码也不是非常难。今天给大家分享一下~ 一、介绍 开发语言:C语言 开发工具:Dev-C++ 5.11 日期:2019年9月28日 作者:ZackSock 也不说太多多余的话了,先看一下效果图: 游戏中的人物、箱子、墙壁、球都是字符构成的。通过wasd键移动,规则的话就是推箱子的规则,也就不多说了。 二、代...
面试官,不要再问我三次握手和四次挥手
三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。 见过比较典型的面试场景是这样的: 面试官:请介绍下三次握手 求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就...
德国 IT 薪酬大揭秘!
作者 |德国IT那些事责编 | 伍杏玲“所有脱离工龄、级别、职位、经验、城市以及裙带关系来谈论工资,都是耍流氓!”——佛洛依德一般来说IT行业公司,资历是按等级划分的...
500行代码,教你用python写个微信飞机大战
这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右手有节奏有韵律的朝着同一个方向来回移动起来! 这是史诗级的发明,是浓墨重彩的一笔,是…… 在一阵抽搐后,我结束了游戏,瞬时觉得一切都索然无味,正在我进入贤者模式时,突然想到,如果我可以让更多人已不同的方式体会到这种美轮美奂的感觉岂不美哉? 所以我打开电脑,创建了一个 `plan_game.py`……
别在学习框架了,那些让你起飞的计算机基础知识。
我之前里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。框架千变万化,而这些通用的底层知识,却是几乎不变的,了解了这些知识,可以帮助我们更快着学习一门知识,更加懂得计算机的运行机制。当然,在面试中也经常会被问到,特别是对于应届生,对于春秋招,也可以看看我前阵子写过的文章历经两个月,我的秋招之路结束了!。也有读者经常问的计算...
不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤
数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,统计数量操作更是经常被用到。 关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT。 但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
如何优化MySQL千万级大表,我写了6000字的解读
这是学习笔记的第2138篇文章 千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个...
面试最后一问:你有什么问题想问我吗?
尽管,我们之前分享了这么多关于面试的主题: 高薪必备的一些Spring Boot高级面试题 面试必问:设计模式遵循的面向对象设计原则! 面试必问:怎么保证缓存与数据库的双写一致性? 27道高频Spring面试题,你能答对几个? 唠唠面试常问的:面向对象六大原则 一文高效图解二叉树面试题 Java面试中最高频的那20%知识点是什么? 百度面试题:求数组最大值 ... 然而,最后这个90%可见...
python 程序员进阶之路:从新手到高手的100个模块
在知乎和CSDN的圈子里,经常看到、听到一些 python 初学者说,学完基础语法后,不知道该学什么,学了也不知道怎么用,一脸的茫然。近日,CSDN的公众号推送了一篇博客,题目叫做《迷思:Python 学到什么程度可以面试工作?》,真实反映了 python 程序员在成长过程中的一些困惑。
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
程序员成长的四个简单技巧,你 get 了吗?
最近拜读了“阿里工程师的自我修养”手册,12 位技术专家分享生涯感悟来帮助我们这些菜鸡更好的成长,度过中年危机,我收获颇多,其中有不少的方法技巧和我正在使用的,这让我觉得我做的这些事情是对的,我走在了一条正确的道路上。我们程序员这个行业不像医生、律师等其他行业,那些行业可谓是越老越吃香,但是我们不一样,我们不能享受越老越吃香的待遇,因为互联网发展太快,技术不断的更新,就我工作的这短短几年时间就有不...
Java 8:一文掌握 Lambda 表达式
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。
Python中几个非常有趣的模块
最近学习Python,发现了许多有趣的模块。感觉开启了新世界的大门,因为我也不是对所有模块都熟悉,所以今天不是讲代码。 1、ItChat 这是一个微信自动回复的模块,因为我微信一直无法登陆,所以也没有测试这个模块的功能。这里只是简单介绍一下。 使用流程大致就是: 登陆微信 注册监听 响应监听 结束 而我就卡在了登陆微信上面,注册监听的话代码也是非常简单的。它可以监听多种数据,文字、图片、视频等...
2020年秋招后端面经
主要包含华为,网易互娱,广联达,科大讯飞,浦发,中兴,上海农商行这些已经拿offer的,还有京东(不小心把二面时间换了一下,等通知等三个月了),虾皮(一面挂),顺丰(sp专场一面之后没消息,秋招第一个面试),携程的一些面经 文章目录1.自我介绍2.项目介绍3.接口和抽象类的区别相同点:不同点:4.多态5.重载和覆盖6.spring1.动态代理基于接口基于继承2.AOP2.1AOP3.IOC5.SS...
MySQL常用命令/用户管理/数据库备份与恢复
MySQL密码设置与更改: 设置root用户密码: [root@linux ~]# mysqladmin -uroot password "123456" 更改root用户密码: [root@linux ~]# mysqladmin -uroot -p'123456' password '654321' 登录数据库更改密码: MariaDB [(none)]&gt; use mysql; Ma...
小白成长以及学习轨迹:我的四年大学,写给正在读大学的你
前阵子有些读者问我大学期间的学习路线,说他自己现在有点迷茫。说实话,对于学习路线这种文章,一抓一大堆,我也不大喜欢去建议别人究竟该怎么学习,学习顺序之类的。不过对于大学,很多人进入大学的时候,可能都是同一个起点,大学四年过后,却是完全不同的人生轨迹。正好我也想记录下自己从高中进入大学这几年的学习与变化,我的大学经历,可以说是非常普通,没有参加任何竞赛,也没拿过奖学金(当然,国家助学金得拿,哈哈)。...
相关热词 c# mysql插入 c# sha256 加密 c#窗体上的叉添加事件 c#打印图片文件 c#後台調前台js c#控制台美化 c# 标记 浮点型 c#获取当前的农历日期 c# 构造函数重载 c# 页面功能注释