vc编写的dll,在vb下无法调用
再次提出问题:为何我的DLL无法调出?
我的DLL是按照《VC++6.0编程实用技术与案例》一书一字不错的搬上去的,编译顺利通过,谁知在调用时告诉我“DLL 调用约定错误”我已作了如下检查
1〉VC中的数据类型 int, long 调用时均采用 VB下的 long
2〉DLL文件 W32Dll.dll 已 copy 到了 windows/system 目录之下
3〉开发时,是在VB6.0下,采用Non-MFC方式
4> 运行 REGSVR32.EXE W32DLL 报告
"W32DLL.DLL was loaded,but the DllRegisterServer entry point was not
found- - - - "(找不到入口)
一切努力均无效果,现有几个问题:
1〉DLL文件长达 196K,是何原因?
2〉原书中并没有说这个DLL可以被VB6调用,是不是为VB,VC开发的DLL
不能互相调用?(指Non-MFC类型)
3〉我的程序是不是存在大的问题?
现将有关程序附上,请诸位高手拔刀相助,问题解决,奉送我的全部分!
-----------------------------
DLL源文件:
-----------------------------
Factor.h
long Factor(int n);
--------------------------------
Factor.cpp:
extern "C" long Factor(int n)
{
int i;long f=1;
for (i=1;i<=n;i++)
f=f*i;
return f;
}
-------------------------------
W32Dll.def:
LIBRARY "W32Dll"
EXPORTS
Factor @1
--------------------------------
VB程序:
--------------------------------
Dim n As Long
Dim a2 As Long
Private Declare Function Factor Lib "W32dll" (ByVal n As Long) As Long
-----------------------------------------
Private Sub Command1_Click()
n = 5
Text1.Text = n
a2 = Factor(5)
Text2.Text = a2
End Sub
-----------------------------------------
最近几天,我作了若干个dll,全是照书本或杂质上写的,全部不成功