首页 > 开发 > 综合 > 正文

如何实现VB和VC的联合调试

2024-07-21 02:20:28
字体:
来源:转载
供稿:网友


我用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)是否适用我还没有测试过,请大家在需要时自己测试。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表