vvt 发表于 2017-4-6 18:37 按第二种附加方法, 如果VB调用的是32位DLL可以调试, 64位的则不行, 断点直接是空心的 如果调用32位DLL, 哪怕在VS里面活动平台是X64也可以断点调试 |
方法2,你应该附加在 工程1.exe 上,而不是 VB6.exe |
本帖最后由 vvt 于 2017-4-7 07:42 编辑 1. 传入DLL的参数和命令行参数不是一回事。(前者是内存里的各种数据类型,乃至巨量的数组。而后者只能是字符串,并且不允许超过一定的字节数) 2. VB 我其实不了解的。我是用 Qt/C++ 调用fortran的dll。但是原理应该是一样的。 3. 是的,需要先在 VB 里生成 exe,再添加到 Dll 的工程配置的 Command 里。 4. 添加后,请启动 Dll 工程(VS)的开始调试(而不是VB的调试)。断点下在 fortran 的代码 c=a+b 行 5. 你用方法二可以调试吗? |
谢谢大神的回答! 我去试试看。 关于您的提问:(1)DLL的命令行参数,想了一下,我是和运行exe程序时的命令行参数搞混了;把传入DLL的实参认为是“命令行参数”;(2)打码问题:我的命令行参数里填了一个路径名,而我路径名取得比较详细,有个人信息,所以在互联网上就打码了... |
你有两种方法调试: 第一种: 1. 在 Command (而不是 command arguments)里写上 VB 编译出来的 exe 所在的路径。(需要确保它使用的 DLL 是你编译出来的,而不是编译出来后又拷走到其他文件夹的) 2. 在dll对外函数的开始处下断点, 直接启动调试。当VB程序调用 dll 函数时,会自动断下来。 插一句问,DLL运行需要命令行参数吗?怎么听不懂你说什么。截图能不打码吗? 第二种: 1.运行 VB 程序。但不要点击按钮,使之暂时不要调用 fortran dll 的函数。 2.打开 VS,并打开 dll 工程,用 调试,附加到进程... 功能,选择本地 VB 的 exe 进程,并附加。 3.在dll对外函数的开始处下断点,点击 VB 程序上的按钮,使之调用 fortran dll 函数。此时会断下来。 |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-11-23 19:41