能力值:
( LV2,RANK:10 )
2 楼
貌似要写这个的动态链接库的导入库(.lib),再写个头文件(.h)加入到工程就 可以了吧
能力值:
( LV12,RANK:660 )
3 楼
可以用楼上的方法+dll2lib:
http://www.pediy.com/tools/Editors/Dll2lib/dll2lib.rar
能力值:
( LV2,RANK:10 )
4 楼
非常感谢楼上两位的回复!来这个论坛真是倍感亲切啊!
我下了那个DLL2Lib,但是没太看懂:好像是把动态库转化成静态库调用的?
我的目的是把动态库中的某一个(不是几个)函数汇编代码单独提取出来,嵌入到我的VC代码中作为一个函数重新编译。一定不能再带原来的头文件和lib文件。
具体怎么提取,谁有好的办法?具体指点一下子,多谢!
能力值:
( LV12,RANK:660 )
5 楼
反汇编该函数,分析出入口和出口参数,再拷贝修改移植。
能力值:
( LV2,RANK:10 )
6 楼
楼上的兄弟能具体点吗?我今天等了一天了,就在线等这里的回复。非常感谢你!我要反汇编的那个函数有8个输入参数,都是unsigned short 型二维数组矩阵,静态声明的,大小都是[256][256],其中6个输入,2个作为返回输出。反汇编后看的好晕啊!就是数据段的参数怎么传到函数里面,怎么返回的看不懂。push和pop太多了。
在线等,谢谢!
能力值:
( LV4,RANK:50 )
7 楼
dll2lib怎么用啊,大侠们给个例子啊
能力值:
( LV2,RANK:10 )
8 楼
楼上的签名档照片是谁啊?靓得让人晕啊!ZZ
能力值:
( LV2,RANK:10 )
9 楼
另外一个问题:
对于 以静态二维数组为输入参数的动态库函数:
int intFuncABC(a1[256][256],a2[256][256],a3[256][256],a4[256][256],a5[256][256],a6[256][256],x[256][256],y[256][256]);
上面的库函数8个参数都是静态二维数组,在调用之前,我生成输入参数的时候,要静态申请8个同样的二维数组,结果运行就出错了!
经查是因为调用这个函数之前,静态申请的内存太大。
我想问一下:能否用二维指针动态生成二维数组来做为参数传递给intFuncABC()?
如下: a1=new short* [256];
VERIFY(r0!=NULL);
for(int k=0;k<256;k++)
{
r0[k]=new short [256];
VERIFY(a1!=NULL);
} for(int m=0;m<256;m++)
{
for(int n=0;n<256;n++)
{
a1[m][n]=0;
}
} 从a1,a2,...a6,x,y都这样申请,
问题是怎么调用intFuncABC呢?
编译出错:
error C2664: 'intFuncABC' : cannot convert parameter 1 from 'short ** ' to 'short [][256]'
怎么解决呢?不要告诉我把intFuncABC的输入数组参数改成二级指针就行了,因为这是个dll库函数,只能用不能改。再次谢谢这里的每一位!
急急急!
能力值:
( LV4,RANK:50 )
10 楼
看LZ的反汇编功底了。
能力值:
( LV2,RANK:10 )
11 楼
再顶一下!
继续等答案!
类似这样的反汇编代码重新使用的问题,应该是来这里的大侠们经常遇到的吧?
是不是我问的太肤浅了人家懒得理?
能力值:
( LV2,RANK:10 )
12 楼
问题还是没有解决,有人可以帮忙吗?
能力值:
( LV2,RANK:10 )
13 楼
顶自己不违规吧?
呵呵,继续等答案!
能力值:
( LV4,RANK:50 )
14 楼
我也帮你顶
能力值:
( LV2,RANK:10 )
15 楼
难道我遇到的问题,都是别人遇不到的?
郁闷啊!
能力值:
( LV2,RANK:10 )
16 楼
继续问!继续等!继续顶!
能力值:
( LV12,RANK:660 )
17 楼
我比较笨,通常是读懂反汇编代码,然后再移植修改。