VC++ 关于MFC DLL 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:11:25
利用VC编了个dll给VB编译的一个exe用,但是注册时系统提示“初始化历程失败”【怎么回事?】
然后启动那个exe,虽然失败但是他找到了dll,但是提示Run-time error 453.
Can't find DLL entry point InstallRegHook in RegistryInfo.dll

具体的代码请参考以下页面,我只字未改,结果不行!!
【1】那个exe源代码:http://blog.csdn.net/chenhui530/archive/2008/01/31/2076013.aspx
【2】dll源代码:
http://blog.csdn.net/chenhui530/archive/2008/02/02/2079118.aspx

·恳请高手指点。如果在20日0点到来之前确实解决,愿意送上多多的分数!

VB调用VC写的DLL,DLL必须采用标准C的方式:

假设需要导出的函数为:
void Fun1();
int Fun2(int a);

.h文件里这样改:
#define DLLNAME_API __declspec(dllexport)

//导出函数定义
extern "C"
{
DLLNAME_API void WINAPI Fun1();
DLLNAME_API int WINAPI Fun2(int a);
}

.CPP文件里这样改
extern "C"
{
DLLNAME_API void WINAPI Fun1()
{
//你的函数过程
}

DLLNAME_API int WINAPI Fun2(int a)
{
//你的函数过程
}
}

VB调用时的声明
Public Declare Sub Fun1 Lib "yourdllname.dll" Alias "_Fun1@0" ()
Public Declare Function Fun2 Lib "yourdllname.dll" Alias "_Fun2@4" ()

注:_Fun1@0 @后面的这个数字一般是根据参数数量确定的,0个参数是0,n个参数是n*4
这个数值使用Visual Studio的工具DEPENDS.EXE可以看到

一楼的应该说的对,VB调用VC写的DLL,DLL必须采用标准C的方式

你写的DLL是COM吧,用depends查下这个DLL的依赖关系,是否少了文件