vs2015利用python加载dll调试配置
python调用dll相对而言比较方便,写个脚本调试轻松工作,快乐生活。
python脚本
from ctypes import *
import time # 脚本挂起
input() # load dll __stdcall 方式
dll = windll.LoadLibrary('IDPSOLID510Lib.dll'); print("dll handle=",dll); #获取版本号
p_version = create_string_buffer(512);
ret = dll.get_version(p_version); s = string_at(p_version,-1).decode('gbk'); print("ret=",ret," version= ",s); # 调用结果例子
# ret= 0 version= model: CardScriptComplier | version: v1.0.1.20180214 # 枚举设备
ret = dll.EnumDevice(p_version); # 连接设备
ret = dll.ConnectDevice(p_version); print("\nstart ==") for i in range(15):
print("--------count index: %d --------" % (i+1))
# 进卡
ret = dll.MoveCard_In(p_version);
ret = dll.MoveCard_RF(p_version); # 模拟洗卡过程
time.sleep(6.5) # 出卡
# ret = dll.MoveCard_Out(p_version);
ret = dll.MoveCard_OutBack(p_version); print("end ==") # 关闭设备
ret = dll.DisConnectDevice(p_version); # GetDeviceInfo
# GetDeviceStatus
#
# MoveCard_OutBack
print("ret=",ret);
dll代码--def模块定义文件
; IDPSOLID510Lib.def : 声明 DLL 的模块参数。 LIBRARY "IDPSOLID510Lib" EXPORTS
; 此处可以是显式导出
get_version
EnumDevice
ConnectDevice
DisConnectDevice
GetDeviceInfo
GetDeviceStatus
MoveCard_In
MoveCard_RF
MoveCard_Out
MoveCard_OutBack
dll代码
EXTERN_C int WINAPI GetDeviceInfo()
{
int ret = ;
SMART_PRINTER_INFO DevInfo; // get info
ret = smartCommon.GetDeviceInfo2(&DevInfo, szDev, );
if (ret != )
{
ErrorLog(gobal_logger, __FILE__, __LINE__, "getdeviceinfo fail, errcode=%x", ret);
return -;
} return ret;
} EXTERN_C int WINAPI GetDeviceStatus(char*)
{
int ret = ;
long long status = ; ret = smartCommon.GetStatus(&status);
if (ret != )
{
ErrorLog(gobal_logger, __FILE__, __LINE__, "getdevicestatus fail, errcode=%x", ret);
return -;
} return ret;
} EXTERN_C int WINAPI MoveCard_In(char* ErrMsg)
{
int ret = ; ret = smartCommon.CardIn();
if (ret != )
{
ErrorLog(gobal_logger, __FILE__, __LINE__, "movecard_in fail, errcode=%x", ret);
return -;
} return ret;
} EXTERN_C int WINAPI MoveCard_RF(char*)
{
int ret = ; ret = smartCommon.Move(CARDPOS_RF);
if (ret != )
{
ErrorLog(gobal_logger, __FILE__, __LINE__, "movecard_rf fail, errcode=%x", ret);
return -;
} return ret;
} EXTERN_C int WINAPI MoveCard_Out(char*)
{
int ret = ; ret = smartCommon.CardOut();
if (ret != )
{
ErrorLog(gobal_logger, __FILE__, __LINE__, "movecard_out fail, errcode=%x", ret);
return -;
} return ret;
} EXTERN_C int WINAPI MoveCard_OutBack(char*)
{
int ret = ; ret = smartCommon.CardOutBack();
if (ret != )
{
ErrorLog(gobal_logger, __FILE__, __LINE__, "cardoutback fail, errcode=%x", ret);
return -;
} return ret;
}
vs2015调试配置

命令行执行 python testdll.py
启动vc调试,断点就到了。
参考: https://blog.csdn.net/lacoucou/article/details/80066637
vs2015利用python加载dll调试配置的更多相关文章
- MONO加载DLL调试命令
http://www.mono-project.com/docs/advanced/pinvoke/dllnotfoundexception/ http://www.mono-project.com/ ...
- 利用ChromeOptions()加载用户配置
一. 如何绕过页面登录 我们在登录网站的时候,通常需要输入用户名.密码和验证码,那么有没有办法绕过登录环节呢? 有两种方法可以解决这个问题,一种是利用chrome浏览器的用户配置,一种是利用cooki ...
- C# 利用反射动态加载dll
笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...
- 加载dll过程中assembly失败
错误现象: 进行插件读取时出现错误:“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理.此发行版的 .NET Framework 默认情况下 ...
- KEngine:Unity3D资源的打包、加载、调试监控
资源模块做什么? 资源模块——ResourceModule,是KEngine中最核心的模块,其他模块基本或多或少的对它有依赖,它主要的功能是:资源打包.路径定义.资源管理.资源调试. 资源模块对Uni ...
- 关于Windows平台下应用程序加载DLL模块的问题.
本文将讨论以下问题: (1)Windows可执行程序会从哪些目录下加载DLL. (2)如何将可执行使用的DLL放置到统一的目录下,而不是与EXE同一目录. (3)可执行程序加载了不该加载的DLL. ( ...
- c#动态加载dll文件
1.在写一个记录日志到文件中的类库(生成dll文件copy到一个目录中去,然后在主函数的appconfig中去配置. using System; using System.Collections.Ge ...
- Windows x86 x64使用SetThreadContext注入shellcode的方式加载DLL
一.前言 注入DLL的方式有很多,在R3就有远程线程CreateRemoteThread.SetWindowsHookEx.QueueUserApc.SetThreadContext 在R0可以使用a ...
- asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。
最近开发一个项目,里面用到了非.net开发的一个dll文件接口,发现发布到window2003服务器上后,运行网站总是提示 "无法加载 DLL"D:\11\1.dll": ...
随机推荐
- 如何创建magento模块z之Hello World例子(转)
步骤:1.创建一个Hello World模块2.为这个模块配置路由3.为这个模块创建执行控制器 创建Hello World模块 创建模块的结构目录:app/core/local/Sjolzy/Hell ...
- WAMP 默认mysql密码修改
WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车 ...
- Intent----android中的伟大邮差
在android中,intent就像是一个邮差,辛勤高效的在各个组件之间来回穿梭.我们可以通过它启动一个Activity或者Service,或者是发送给广播组件,又或者是与后台的Service进行通信 ...
- POJ 1129 Channel Allocation(DFS)
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13173 Accepted: 67 ...
- Starting with neural network in matlab[zz]
转自:http://matlabbyexamples.blogspot.com/2011/03/starting-with-neural-network-in-matlab.html The neur ...
- unity, particle system Emit from Edge
- 怎么运行 ASP.NET Core控制台程序
aspnet test.dll
- LVS:三种负载均衡方式比较+另三种负载均衡方式
转:http://blog.csdn.net/u013256816/article/details/50705578 什么是LVS? 首先简单介绍一下LVS (Linux Virtual Serv ...
- 开发前奏曲之添加Android SDK平台工具
原文:http://android.eoe.cn/topic/android_sdk Android SDK分离不同部位的SDK成单独的下载包.您已经安装只包含SDK工具的SDK入门包.要开发一个An ...
- javascript原生代码取单选框的值
网上搜索到的,项目中正好用到,先记下来,以后直接从自己的博客上复制粘贴!!! //取单选框选择中的值,传入单选框的name function getRadioBoxValue(radioName) { ...