我用VC写了一个DLL,然后用VB写EXE。我现在想调试我的DLL和EXE,在VB环境下调试,可是我无法跳入DLL函数的内部,无法在DLL内部调试。有没有一个办法能让我实现VB和VC联调,当我在VB环境中需要跳入DLL函数时,进入VC环境,在VC中调试,这样我就可以查看变量值、设置断点,然后等函数返回时又回到VB环境下继续调试。 后来经过我自己的一番摸索,终于实现了VB、VC联调。 这个方法是以VC为主环境,VB为副环境,这是因为DLL是由VC编写的,而在调试DLL的时候一般会让我们指定一个EXE。如果DLL是VB编写的,我想应该是以VB为主环境(没有测试过)。 1. 建立一个VB Standard EXE工程project1.vbp,在这个工程中调用VC编写的动态连接库中的函数。2. 建立一个VC DLL工程TestDll,编写代码实现函数输出。建议把整个工程目录放置到project1.vbp所在的目录。3. 设置VC工程,这一步是非常重要的,是实现联调的关键。a) 更改General选项卡中OutPut Files的路径,指定到project1.vbp所在的目录。由于我把工程目录放在了project1.vbp目录下,因此我这里用相对路径“..\”(其实就是project1.vbp所在的目录)。b) 更改Debug选项卡中Executable for debug session:为你电脑中VB6.exe;更改Working directory为project1.vbp所在的目录;在Program arguments:中填写project1.vbp,这个参数其实是传给VB的,让VB打开project1.vbp,如果增加参数”/r”,那么在VB启动后立即开始(相当于按F5),如果不增加参数”/r”,那么需要手动开始。c) 确认你的Link选项卡中输出DLL的路径及DLL名称,把他设定到project1.vbp所在的目录:4. 在你的DLL源程序(VC中)中设定断点,按F5, GO!怎么样,VB环境已经运行起来了,工程project1.vbp已经打开了吧!如果你在3)b.的Program arguments:中指定了”/r”参数,那么这个时候程序已经开始运行了,如果你没有指定这个参数,那么你可以先在VB环境中设定断点,然后在调用DLL函数上设置断点,按F5,Start!如果在VB中遇到断点,程序就会停下,然后按F8,Step into! 发现什么了,哈哈,VC环境主动切换到前面,而且当前的箭头已经指向了被调用函数了,这个时候,已经进入VC环境了,你想怎么调试都可以!当被调用函数要结束时,请按F11,Step Out,否则会有一段汇编代码。这个时候VB环境有主动切换到前面,又进入VB调试环境了! 在用VC编写DLL时要注意,VC会对输出函数名进行一些修饰,所以还是需要在def文件中明确输出函数名。这个方法对于其他的环境之间(如Delphi-VC、Delphi-VB)是否适用我还没有测试过,请大家在需要时自己测试。
如何实现VB和VC的联合调试
时间: 2025-01-29 19:47:49
如何实现VB和VC的联合调试的相关文章
VB与VC混合编程中处理消息的方法
现在越来越多的人采用VB与VC的混合编程:用VB快速开发出漂亮的界面以及外围处理程序,再用VC编写底层的各种操作,例如内存的操作.IO端口的操作等,VC中还可以嵌入汇编语言进行更底层的操作. 一般的做法是将VC程序编译成DLL,在VB中用Declare语句声明DLL中的函数,例如: Declare Function SendCommand Lib ″c:\program files\devstudio\wjfprojects\Hr0506dllMnsr\debug\Hr0506dllMnsr.d
vc++编程问题-VC++编程错误调试问题
问题描述 VC++编程错误调试问题 #include #include #include #include #include //#include #include #pragma comment(lib,"ws2_32.lib") 出现下面错误要怎样具体调试 c:program filesmicrosoft visual studiomyprojects111121.cpp(7) : fatal error C1083: Cannot open include file: 'Ntdd
VB编写ASP组件的调试
SunADM在线创作 用VB调试组件--前面豆腐说的其实还是重启了IIS的服务:p 其实如果用VB6的话,本身就已经提供了这种调试功能,方法: 现在假设组件已经初步创建完成,并在IIS/PWS下做好了调试用的ASP程序,Copy下它的URL. 调出工程属性,到调试页,选中"启动浏览器时使用的URL",把刚才的URL Paste进去. 确定,再按F5 -- 有点迷惑的是,有时会出权限问题-- 作者:Sunadm(原创)
【请大家帮助】新手,我用VC.net远程调试应用程序,在本地机看不到界面,这正常吗?
问题描述 我用VC.net做远程调试,可以实现在本地机上启动调试(F5)后,远程机上自动打开了要调试的应用程序界面.但是,本地机却弹不出界面,这怎么继续调试啊?我是新手,如果本地机上没有界面,怎么发送软件消息呢?比如点击了某个按钮,软件开始正式运行.我第一次发帖,散20分吧,不知道帐上够不够.请教大家了,多谢! 解决方案 解决方案二:你调试的时候,本机上设断点了吗?解决方案三:多谢楼上的!没有设断点,本地机上的程序只是运行WinApp,直到远程机上弹出主窗口后,本地机程序就暂停了,没法继续...
VC使用CRT调试功能来检测内存泄漏
信息来源:csdn C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:"最大的长处也可能成为最大的弱点",那么 C/C++ 应用程序正好印证了这句话.在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题.其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误.偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种 各样的征兆:从性能不良(并且逐渐降低)到
VB操作VC编写dll的问题
问题描述 这里有一个VC编写的dll文件,需要分别使用C#,和VB来进行调用文件中的数据结构及函数分别为:typedefstructAD_ITEM_FLAG{longADItemSize;longid;longADFlags;charPath[255];longisCut;longVolume;longPosition;longTimes;charContent[1000];longTimeLong;charTextFont[32];longFontSize;longFontColor;long
使用DES加密解密代码(C# &;amp; vb.Net),已经调试成功,支持中文加解密,公布!
C#-----------------------------------------------//名称空间 using System; using System.Security.Cryptography; using System.IO; using System.Text; //方法 //加密方法 public string Encrypt(string pToEncrypt, string
【分享】VC++6差错调试技巧。
首先如果你用的是vc6的话: 1.按F5运行你的程序 2.在出错时,选择"重试" 3.按ALT+7调出"调用栈"窗口 4.双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处.一般来说错误就出在这附近.你可以通过查看变量的值来确认
在VB.NET中调试存储过程
存储过程 调试是编写应用程序的一个主要部分.Visual Studio .NET为自带的调试器提供了大量的增强性能,包括统一的调试界面.Web service调试以及跨语言调试.这种调试器的一个最有用的新功能体现在对存储过程的调试性能上.本文我将介绍在VS.NET中对SQL Server 2000存储过程进行调试的几种可选方法,以及你可能会遇到的一些配置问题. 许多商家使用SQL Server作为数据库,并将存储过程作为将数据返回VB中的机制,因此对存储过程进行逐步调试的能力成为开发的关键.Vi