2. 在Eclipse中,Window->Preferences->Java->Installed JREs,选择Add,在JRE Home中选择JDK路径(因为只有JDK支持源码调试),并且给它合适的命名。退出保存后,选择JDK路径。
3. 右键你的工程项目,Properties,Java Build Path->Libraries,找到JRE System Library,选择Edit。使用Alternate JRE中你创建的JDK。
4. 应该就大功告成了 。
第一步,调试的准备。用C#语言编写一个测试dll文件的程序,由于dll源程序是c的,且运行结果是黑屏的,所以C#代码也是运行在黑屏的console环境下。完整代码如下。
using System
using System.Collections.Generic
using System.Linq
using System.Text
using System.Runtime.InteropServices
namespace TestMelp{class Program{[DllImport(@D:\Visual Studio Projects\FileMelp\Debug\FileMelp.dll, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
extern static void cmd_melp(int argc, string[] argv)
static void Main(string[] args){//string cmd = melp -s -i D:/bin/bit -o D:/bin/output
string cmd = melp -a -i D:/bin/inputD -o D:/bin/bitRight
string[] argv = cmd.Split(new char[] { ' ' })
int argc = argv.Length
cmd_melp(argc, argv)}}}由于调试的FileMelp.dll文件和本程序不在同一个文件夹下,容易出现文件地址问题,所以本测试程序的文件均采用绝对地址。另外cmd的格式要求不能有两个连续的空格,也可以通过使用Trim函数,解决这个问题。
第二步,定位到自己改写的带有源代码的dll工程。
本文的FileMelp.dll工程,是通过本空间的生成VS dll那篇博客生成的,具体实现方法不在赘述。下面的两段代码分别添加到FileMelp工程melp.h和melp.c文件最下面。
#ifndef LIB_H
#define LIB_H
extern _declspec(dllexport) void cmd_melp(int argc, char **argv)
/* 加入任意你想加入的函数定义*/#endifvoid cmd_melp(int argc, char **argv){main(argc,argv)}按F6,上述步骤实现FileMelp.dll动态库的生成。
第三步,添加测试程序到dll源代码处。
在FileMelp工程里面,右击FileMelp工程,选择属性。
或者按Alt+Enter,d出如下界面。
在Configuration Properties\Debugging\Command选择第一步生成的测试.exe文件。这样完成了调试前的准备。接下来,在需要调试的代码地方,添加断点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)