读书人

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

发布时间: 2012-01-12 22:11:58 作者: rapoo

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可不支持这个啊!

读书人网 >VC/MFC

热点推荐