注册 登录
编程论坛 VC++/MFC

调用外部DLL出错

happynight 发布于 2010-10-26 17:29, 1020 次点击
两个函数 第一个能成功调用 第二个报错
代码如下:
#include <iostream.h>
#include<windows.h>
void main(void)
{

typedef int (*findEqm)(char *IP, BOOL Flag);                //
typedef int (*DataRtn) (char *desIP, int eqmNo, int bits);  //
findEqm Fun=NULL;
DataRtn Fun2=NULL;

HINSTANCE hDLL;
hDLL=LoadLibrary("SetTimedll.dll");

Fun=(findEqm)GetProcAddress(hDLL,"findEqm");
Fun2=(DataRtn)GetProcAddress(hDLL,"DataRtn");

if(Fun)
{
    int A=Fun("192.168.0.30",1);
    cout<<"结果为"<<A<<endl;
}
if(Fun2)
{   
    int B=Fun2("192.168.0.30",1,6);              //出错"the value of esp was not properly ...."
    cout<<"结果为:"<<B<<endl;
}
FreeLibrary(hDLL);//卸载MyDll.dll文件;
}
6 回复
#2
yangang22010-10-26 18:36
能把编辑的DLL的VC++源文件传上来吗?顺便把客户端程序也穿上来,我也正在学DLL,我们共同研究一下
#3
happynight2010-10-27 08:47
那个DLL是一个商业软件的 没有原代码
#4
yangang22010-10-27 13:14
你那个函数是不是传值出了问题,或者加载失败你可以增加语句if(!Fun2) {cout<<"函数加载失败"; return;}来验证
#5
happynight2010-10-29 10:37
以下是引用yangang2在2010-10-27 13:14:20的发言:

你那个函数是不是传值出了问题,或者加载失败你可以增加语句if(!Fun2) {cout<<"函数加载失败"; return;}来验证
按你的方式加了测试语句 能正常加载函数
#6
yangang22010-10-29 14:34
回复 楼主 happynight
那就只能是参数的问题了,这个问题真的有点恼火。难道某个参数不能赋值,只能传递个变量给它,也许这个参数是个out类型的,不是in类型的,你可以用这个思路试试看。
#7
happynight2010-11-01 13:46
多谢各位 估计这个函数的调用是不适合用VB来处理的吧 已经放弃了
1