用c++调用下面的dll

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:52:14
dll下载地址:

http://mwogiq.bay.livefilestore.com/y1p90zhfUOYki2AaFBdMPlD_I6uImN360ONn2CHt0nepFow13co73rQoaYofw4spUOub9cZz3D9evUUIXsHQqcaJtpwrIx4N3eZ/Vz_API.dll

里面只有一个外部函数,求调用方法
请给出源码,提供下载,而且必须自行测试过 还有如果有返回参数则一定要提取出来

是这样的函数
Vz_API(void *,char * const,char * const)

使用vc的话可以这样
头文件要有
windows.h
函数可以这样定义 架设dll名字为vz_api.dll并和你编译好的程序放在同一目录
void MyVzFunc(void * c,char * b ,char * a )
{
HMODULE hMod = LoadLibrary(TEXT("vz_api.dll"));
DWORD dwAddr = (DWORD)GetProcAddress(hMod, "?Vz_API@@YAXPAXQAD1@Z");
__asm{
push a
push b
push c
call dwAddr
}
}

这样就行了

函数的修饰名确实是 ?Vz_API@@YAXPAXQAD1@Z
函数原型应该是如下
void VZ_API(void *c,char b[], char a[])

这个原型也等价于
void VZ_API(void *c,char *b, char *a)
楼上 已经给出了汇编的调用方法
我给出c的调用方法

typedef void (*vz_api)(void *c, char *b, char *a);
vz_api VZ_API;

HMODULE hMod=LoadLibrary("vz_api.dll");
if(hMod)
VZ_API=(vz_api)GetProcAddress(hMod, "Vz_API@@YAXPAXQAD1@Z");
else
出错处理

然后你就可以调用VZ_API了,效果等同于原来的函数.

知道了函数名直接吊就行了!
不过函数要声明,然后记得链接到它的lib库,还要把dll文件放到工程下