首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

mfc调用MFC做的DLL出错,新手100分求救解决方法

2012-01-12 
mfc调用MFC做的DLL出错,新手100分求救我用MFC做的DLL(dlltest2.dll),函数的定义为classCDlltest2App:publi

mfc调用MFC做的DLL出错,新手100分求救
我用MFC做的DLL(dlltest2.dll),函数的定义为

class   CDlltest2App   :   public   CWinApp
{
public:
int   _stdcall   add(int   a,int   b);
}
函数为:

int   CDlltest2App::add(int   a,   int   b)
{
return   (a+b);
}
.def文件的内容为:

;   dlltest2.def   :   Declares   the   module   parameters   for   the   DLL.

LIBRARY             dlltest2
DESCRIPTION     'dlltest2   Windows   Dynamic   Link   Library '

EXPORTS
        ;   Explicit   exports   can   go   here
add
编译是没有错误.
用MFC调用的程序为:

HINSTANCE   hInst;
hInst=LoadLibrary( "dlltest2.dll ");
typedef   int   (/*WINAPI_stdcall*/   *ADDPROC)(int   a,int   b);//
                                                        //WINAPI和_stdcall我   都试过了,都不行.
ADDPROC   Add=(ADDPROC)GetProcAddress(hInst, "add ");

DWORD   err=GetLastError();
                  //err的值为127,The   specified   procedure   could   not   be   found.  
if(!Add)
{
MessageBox( "获取函数地址失败! ");
return;
}
CString   str;
str.Format( "5+3=%s ",Add(5,3));
MessageBox(str);
FreeLibrary(hInst);
}
调用程序编译也能过,在运行时,用GetLastError();得到
错误值是127,没有发现函数,不过我在VB中调用是没有问题的,请用应该怎样处理,才能正确.
谢谢!
另外在DLL中定义的函数返回类型能不能是CPtrArray类型,
即:CPtrArray   _stdcall   fun();
如果可以,应该怎么样定义和调用.

谢谢

[解决办法]
非得用类吗?
.h
int _stdcall add(int a,int b);

.cpp
int _stdcall add(int a,int b)
{
return a + b;
}
[解决办法]
关注
[解决办法]
接分
[解决办法]
接分
[解决办法]
jf
[解决办法]
你的dll中没有那个ADDPROC Add=(ADDPROC)GetProcAddress(hInst, "add ");调用的add方法,C++编译器编译出来的函数名称同代码中不一样,如果想做一样的,可以加上extern "C "
[解决办法]
jf
[解决办法]
JF
[解决办法]
to Tolirry(无敌)
肯定不是你说的问题了,人家是通过def文件导出的,可以不更改函数名的。
[解决办法]
你那个是成员函数!怎么可能用GetProcAddr获得啊?

API可不支持这个啊!

热点排行