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": ...
随机推荐
- 【java】switch case支持的6种数据类型
switch表达式后面的数据类型只能是byte,short,char,int四种整形类型,枚举类型和java.lang.String类型(从java 7才允许),不能是boolean类型. 在网上看到 ...
- SQL SERVER 2008自动发送邮件(完整版)
这两天都在搞这个东西,从开始的一点不懂,到现在自己可以独立的完成这个功能!在这个过程中,CSDN的好多牛人都给了我很大的帮助,在此表示十二分的感谢!写这篇文章,一是为了巩固一下,二嘛我也很希望我写的这 ...
- JavaScript日历控件开发 C# 读取 appconfig文件配置数据库连接字符串,和配置文件 List<T>.ForEach 调用异步方法的意外 ef 增加或者更新的习惯思维 asp.net core导入excel 一个二级联动
JavaScript日历控件开发 概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebc ...
- Create PDB with Sample schemas in 12C
查看: SQL> select * from ( 2 select username, account_status from dba_users order by created desc) ...
- SharePoint 2013 Backup Farm Automatically With a Powershell and Windows Task Schedule
In this post,I will show you SharePoint 2013 How to Backup Farm Automatically with a PowerShell and ...
- 为什么有时候PHP没有闭合标签结束符 ?>
找了一些资料,大家对PHP闭合标签的总结如下: 好处:如果这个是一个被别人包含的程序,没有这个结束符,可以减少很多很多问题,比如说:header, setcookie, session_start这些 ...
- 转 redis 锁
原文链接: http://www.promptness.cn/article/34 前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的 ...
- 根据Rowkey从HBase中查询数据
/** * @Title: queryData * @Description: 从HBase查询出数据 * @author xxxx * @param tableName * 表名 * @param ...
- tensorflow中使用Batch Normalization
在深度学习中为了提高训练速度,经常会使用一些正正则化方法,如L2.dropout,后来Sergey Ioffe 等人提出Batch Normalization方法,可以防止数据分布的变化,影响神经网络 ...
- java-Spring 管理bean例子
Spring 通过2种方式管理bean 首先要导入Spring的包,(Spring.jar和commonslogging.jar) 或加载分开的... 在src目录下建立applicationCont ...