python如何调试C++编译的dll

如题,由c++编译dll提供接口给python调用。出现错误想知道执行到了哪一步。请问各位有没有好的调试方法。通过return返回值的方法已经被使用了,其实最好的解决方案是能够在python的控制台下有输出,请问这两个之间有没有什么方法,或者其他的解决方案。

0

3个回答

如果你是用vc++开发的dll,那么可以在dll的代码中设置好端点,然后选择调试,等待宿主进程,然后运行你的python程序。或者先运行python,然后在vs里附加进程调试。后者适合那种gui的程序,也就是python程序一开始运行不调用dll,而是你输入什么参数或者点了什么按钮才调用。

2

如果有dll源代码的话可以在关键位置插入debug语句输出到log文件,调试效果就和输出到python控制台差不多;
如果无法改变dll内容,又觉得是dll内部函数的问题,可以另外写一个简单的测试项目逐一对dll内的函数进行排查。

1

想调试c++的库要设定好执行的exe,然后在库函数内加断点就可以了,你不可能用python来调试c++,调试用的编译器还是你做出库的那个编译器,比如vs2013;
图片说明

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
【C】dll文件的建立与调试
最近需要将rtklib的一些功能提取出来,生成动态链接供其他程序调用;nn参考资料nn调试动态链接库(DLL)http://www.tuicool.com/articles/aQfmIbnn利用VS生成.lib及.dll文件http://wangzi6147.github.io/2015/05/05/DLL.htmlnn1)lib文件与.dll文件nn.lib文件称作静态链接库,.dll文件称作动...
vs2010 利用python 加载并调试dll
  dll调试是个麻烦事,如果专门写一个exe去调试dll比较麻烦,现在提供一个利用python脚本调试dll的办法。  环境要求:  python 2.7.14 32位  vs20101.dll编写     vs2010 新建一个dll工程,命名为test.dll,其中有一个导出函数test,使用def文件导出:EXPORTSn test  函数内容为:   void test(char*...
VS2012生成C的dll并调用以及Python调用C的DLL
目录nnVS2012生成DLLnnVS2012进行DLL调用nnPython调用C的DLLnn nnVS2012生成DLLnn使用Win32应用程序向导!nnnn这样就会生成一个模板,我们只要填充模板就可以了nn添加一个mydll.cpp文件,如下图:nnnn添加如下代码:nnnextern "C"__declspec(dllexport) int Add(int a,int b){nn retu...
[续]Sublime Text 3编译运行并调试C、C++、Python、Java
[续]Sublime Text 3编译运行并调试java n接着上次的操作又试了试,终于可以编译java了! n在menu中选择 Tools->Build System->New Build System就会新建一个,将一下的三段内容直接ctrl+s 保存在默认位置就可以。nnnn{n "cmd" : ["\"javac $file_name ; java ${file_ba...
Sublime Text 3编译运行并调试C、C++、Python
今天晚上是真正的感受到了Sublime Text 3的强大,真的是强!!! n网上找了好几个教程,基本都是可以在Sublime Text 3的界面上进行输出,不能调用终端,也就是不能使用scanf(),cin()这类的输入,无法键盘输入,那么就失去了学习的意义。直接开始吧! n我的sublime Text 3是ubuntu下的,windows 下的没有实验,所以不知道可行性!在menu中选择 Too
vs2010编写dll库供python使用
刚接触这个问题的时候在网上也是搜罗了一大堆,大多数做下来没有成功,原因未知,很可能是我的功底不够吧,这里记录一下我成功的demo,希望能版主其他人。首先就是使用vs2010创建一个dll库(空项目)的工程, n添加源文件(如:hello.cpp)#include <stdio.h>n#include <string.h>n#include <stdlib.h>#define EXPORT_PKG_D
.c文件生成64/32位的.dll文件,同时Python调用c文件
Python中的ctypes模块可能是Python调用C方法中最简单的一种。ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不需对源文件做任何的修改。也正是如此奠定了这种方法的简单性。示例如下:实现两数求和的C代码,保存为add.c#include &quot;stdio.h&quot;n n__declspec(dllexport) int sum(int a, int b)n{n ...
windows下动态库dll和静态库lib编译和使用问题
window下动态库dll和静态库lib问题nwindows下动态库dll和静态库lib的联系和区别,以及示例导出个动态库nhttps://blog.csdn.net/lifei092/article/details/79630273n问题:n1,生成dll时,同时生成lib是做什么的?nnlib是dll中的索引,可以这么理解。lib是编译的时候用,编译完后,就不再需要了。运行时只需要dll。nn...
使用VS2010编写Python的C扩展
Python语言的特性具有良好的开发效率,使其在诸多领域备受青睐。然而Python语言执行效率的缺陷,使得他在许多对工程效率要求严格的领域的应用受到了限制。但好在Python具有优秀的扩展性能(常常被人称作胶水语言),能通过C\C++、Java等多种语言对其进行扩展。这样便允许我们在工程中使用C语言扩展Python核心代码,同时也能在Python工程中如同调用普通模块一样对C扩展进行调用。使得Py
win下使用dev c++将生成dll文件供python调用
最近小狼设计课题中有使用python和c混合编辑的需求,在这里做一个简单备注。rn所谓dll文件,即动态链接库(英语:Dynamic-link library,缩写为DLL)rnrnwiki上解释为:所谓动态链接,就是把一些经常会共享的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,Windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行档,当程...
如何动态调试Python的第三方库
如何调试第三方库,如何才能动态看到第三方库中的中间结果?
在VS2015中用C++创建DLL并用C++调用且同时实现对DLL的调试
在VS2015中用C++创建DLL并用C++调用且同时实现对DLL的调试
VS2017——C语言dll编译并调用
1.生成dllrn1.1文件——新建——项目,选择如下图rnrnrnrnrnrnrnrnrn1.2新建头文件test.h和源文件test.crn//test.hn__declspec(dllexport) int sum(int a, int b);rnrnrn//test.cn#include "test.h"n#include nnint sum(int a, int b) {n return
在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
在VS2015中用C++创建DLL并用C++或C#调用且同时实现对DLL的调试
Dev c++工具将C代码生成dll文件以及如何调用dll文件
该篇文章是对工作中一个需求的总结,工作需求是要将C语言的函数接口,生成一个DLL文件,让labview调用。然后我尝试用devc++开发工具来实现这个功能,后来因为DLL生成了,但labview调用的结果和C执行的结果不一致,因此我需要再调用下自己生成的DLL是否正确来定位出错的环节,因此就有了生成DLL以及调用DLL文件。首先说下DLL文件,DLL(Dynamic Link Lib
Unity调试C++动态库
C++动态库工程输出目录设为Unity工程下Assets/Plugins/..;确保动态库的平台架构和unity的架构一致,X64对X64;从unity editor启动VS;VS设置:动态库工程调试--附加到进程--unity;待定http://blog.csdn.net/foreverml/article/details/29818509...
VS2015 C++程序调Pyhon脚本
前面几篇文章介绍了:python程序如何调C DLL,如何使用VS2015调试python程序和调试被python调用的C DLL程序。本文则反过来探索,在C++程序中如何调python脚本。大致有两种方法:一是使用“system()”函数启动python解释器,在外部执行python脚本;二是将python解释器嵌入C++程序中,直接执行嵌入的python代码。nnn一、system()函
如何在VS2017中单步调试第三方DLL
用VS进行项目开发的时候,经常会用到第三方DLL。既然是项目开发,就免不了调试,那么如何能像调试本机代码一样方便的调试第三方DLL呢?n总结一下:n(1)下载安装.Net Reflector插件n ( 2 )  打开.Net Reflector Object Browsernnn ( 3 )  找到需要调试的DLL右键Enable Debugingnnn (4)接下来打上断点就可
手动编译纯C代码为DLL库
最近在研究心电图处理算法和散点图分析模型,涉及需要将一些纯C编写的源码编译为DLL供C#调用。先说一下碰到的坑,因为vs2015支持编译C代码,原本希望用vs直接编译DLL,发现需要各种配置,还出现各种编译问题、链接问题,差点崩溃;最后以试试看的心态用命令行进行编译生成,一次就成功了,看来化繁为简才是最有效的。--------------------------------------------...
运用gdb调试python和C++混合编译
参考:https://blog.csdn.net/N_sev7/article/details/47299469nnhttps://blog.csdn.net/u014230646/article/details/80548308nn程序中调用,于是问题来了,怎么对python的共享库进行调试呢?既然是在Linux下,那么首先想到的肯定是用GDB进行调试,那么下面先介绍一下如何使用GDB调试pyt...
如何利用eclipse 生成动态库
打开eclipse File->New->c project->Shared Library创建一个名称 ->Finish 这就完成了一个空的库工程。rn     创建相应的功能文件,右键工程New->Source File。在C文件中编写相应的功能函数。如需链接相应库的则在工程属性中添加链接相应库如下(如果需要还要添加库相应路径):rnrnrn很重要一点就是配置链接参数在工程属性中将-fPIC勾
C/C++ 编译调用 DLL
本文会先阐述用 C/C++ 编译 DLL 的基本问题,然后详解各种导出导入方式,给出一些例子,再说明一些需要了解的常识。以此文,致予苦于寻找却无所获的学习者,供大家交流学习。欢迎转载,但请保留本提要及文章出处,尊重原创者劳动成果。
Unity3d 64位编辑器中使用C/C++动态链接库的方法
Unity3D 64位编辑器中使用DLL
使用cython将python代码生成动态库.so文件
setup.py代码内容:n其中add.pyx是将原有py文件rename成pyx后缀nfrom distutils.core import setupnfrom Cython.Build import cythonizennsetup(ext_modules = cythonize('add.pyx'))n# $ python setup.py build_ext --inplacenn在ter...
使用g++命令生成dll文件实现lua调用C代码
首先安装gcc环境,下载MinGW,MinGW只是一个管理工具,真正的环境还需要在里面下载注意选中下载项后点击菜单项中Installation---&amp;gt;Apply Changes才会开始下载,会下载至MinGw安装目录下,确保bin目录中存在lua52.dll,lua.exe,gcc.exe,g++.exe,这里lua52.dll的52代表的是版本号,可能不一样。注意需要下载下面的这些目录。编...
VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
1.创建dll项目nn打开VisualStudio2019 创建DLLnnnn点击下一步nn命名为DemoDll即可nnnn点击创建即可nn然后定义宏:nn在头文件中定义即可,宏的作用的是允许该函数能够被外部访问,并直接调用。nn如下:nnnn代码:nnn// pch.h: 这是预编译标头文件。n// 下方列出的文件仅编译一次,提高了将来生成的生成性能。n// 这还将影响 IntelliSense...
unity如何调试dll库文件
首先,调试这个dll文件,必须在本地有工程~ 并且安装visual studio tools for unity~这是前提。rn我是在visual studio 2015中进行调试的。rnrn然后打开unity中需要调试的脚本文件,在解决方案中添加外部工程,也就是你要进行调试的工程。rn添加进来后,鼠标右键该工程,选择属性,其中有个输出目录~如下图所示:rnrnrnrn这个输出目录就是你在unit
vs调试dll工程
dll本身是没法运行的,必须在其它工程调用dll时候才会运行。所以,调试dll首先要将调用dll的工程和dll工程联系起来。解决方案中添加dll工程:现在dll 和 应用程序两个工程就都在一个解决方案里了: 这时要对dll工程作些设置。配置属性-常规-输出目录设置为 应用程序的生成目录这样一来编译的dll、pbd文件就直接输出到对应应用程序的生成目录下面了 接下来依据一些文章说法,要在dll工程的...
C++的DLL调试技巧
C++的DLL调试技巧
windows下使用vsc编译调试c++程序
1,windows下安装MinGW-w64编译器 n MinGW-w64 n 下载直接解压 n2,vsc安装插件: n Code runner n Clang n3,设置MinGW环境变量 bin路径 n4,设置vsc项目,在.vscode文件夹下nnnlaunch.json文件nnnnn{n &amp;amp;amp;quot;version&amp;amp;amp;quot;: &amp;amp;amp;quot;0.2.0&amp;amp;amp;quot;,n &
VS调试时找不到dll或exe的方法
1、采用附加到进程的方法    :  调试-> 附加到进程 (在下面的列表框中选择要调试的程序)rn2、若更改了默认的生成路径或生成文件名(a.exe改成了b.exe)则可以在工程属性中进行设置:rn      右键工程-> 属性-> 配置属性-> 调试-> rn                    a、"命令"中输入要调试文件的路径rn                    b、“工作目录”中
VS编译所需要的各种dll
VS编译所需要的各种dll
VS下 调试 Qt程序提示缺少xxx.dll的解决办法
右键 打开属性页 ,在链接器中 的   rnrnrn附加库目录  $(QTDIR)\lib;$(QTDIR)\lib;$(QTDIR)\lib;%(AdditionalLibraryDirectories) rnrnrn中添加上  $F:\Qt\5.3\msvc2013_64_opengl\bin;  你的qt的bin,目录,然后就可以调试成功了rnrnrnrnrn也可以添加qt的环境变量,然后重
如何用VS编译调试C程序
参考教程网址如下nnhttp://jingyan.baidu.com/article/1709ad80a181c64634c4f0da.htmlnn nn简单说一下流程nn1打开vs2012——文件——新建——项目 单击nn2在对话框左侧分别找到模板——其他语言——visual c++——win32(如图)nn选择“win32控制台应用程序”并设置好”名称“和”存储路径 “后单击确定nn3单击下一...
QT调用dll且进入DLL src code调试
qt应用程序AA.exe调用qt写的BB.DLL时,进入BB.DLL src code调试1、debug生成AA.exe2、将debug生成的AA.exe整包debug folder放到BB.dll的debug生成的文件夹中3、设置BB.dll这个project:项目----运行-----Executable中选择BB.dll的debug文件夹中的AA.exe4、在BB.dll的源码中设置断点5、...
Pycharm等调用dll时使用VS调试:附加到进程(Attach to Process)
前言nnPython与C语言联合编程时,使用python调用dll库是很常见的情况,因为可以通过将常用函数或复杂函数封装成C语言提高效率,但如何调试是一个问题。nn本文环境:VS 2013 Ultimate + Pycharm 2017 Communitynn正文nn1.编写dll文件nn新建VS项目,选择“Win32控制台应用程序”或“Win32项目”(甚至“空项目”)都可以,在向导中选择“DL...
如何编译生成dll文件以及如何调用dll文件
点击确定选择dll选项和空项目选项nnn点击完成 n1.2 为项目添加c++源文件mydll.cppnextern "C" // 此处extern "c" 为解决c/c++兼容问题 n{ _declspec(dllexport)int add(int a, int b)n {n return a + b; n}nextern "C"n{n _declspec(dllexpor
dll与exe的联合调试-----------(一)
dll原理啥的放到别的博客章节吧,这里说说配置就行了nn1.最好把dll和exe输出到统一目录,(方便) nnn.lib .pdb文件不可缺少(内涵符号链接等调试信息)nn2.exe正常引用dll(这里说隐式的):nnnn#ifndef DEBUGDLL_H_n#define DEBUGDLL_H_n#include&amp;quot;./../dll/export.h&amp;quot;nnn#pragma comment(lib...
VS中C++静态/动态库文件的编译调试与使用
基础知识:n不同语言之间可以通过调用动态链接库 (dll)来调用别人写好的函数n同一语言可以调用别人写好的静态(lib)库nnn静态链接库:是通过静态联编的,在链接时,link将自己的(.obj)二进制文件和别人的lib文件一起共同生成.exe文件。n静态链接库的缺点是:n1)比较吃内存n2)生成的exe文件大n3)升级不方便n动态链接库:是将自己生成的EXE程序和需要调用的D
vs2012编译lua源码和产生c代码的动态链接库
最近一直在搞lua的源码编译,同时有需求将c代码编写成lua可以调用的动态链接库。尽管网上已经有好多人做过类似的工作了,但是我自己做起来还是感觉很吃力。今天花了一天时间终于搞定了。所以把今天踩的坑记录一下。n首先编译lua的动态链接库,也就是传说中的lua.dll。参考文章。我的工程名为lua532。主要是将除了lua.h、lua.c、lualib.h、luac.c以外n的所有后缀为.h和.c
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python在线编译教程 python如何学习