VC6中的函数extern "C" __declspec(dllexport) LONG _stdcall getlUserID(char *ip,char *name,char *password,int port); LONG _stdcall getlUserID(char *ip,char *name,char *password,int port){
//初始化SDK
int a = TFC_NET_Init(); //登陆用户实体
UserLoginInfo_t UserLoginInfo; //实体类赋值
strcpy(UserLoginInfo.userIPAddr.ipV4, ip);
strcpy(UserLoginInfo.szUserName, name);
strcpy(UserLoginInfo.szPassword, password);
//端口
UserLoginInfo.port = port;
//返回-1表示注册登陆失败
LONG lUserID = TFC_NET_Login(&UserLoginInfo, NULL);
if (lUserID == -1)
{
//查看原因
      printf("Login to Device failed! Error : %d\n", TFC_NET_GetLastError());
//printf("Login to Device failed! Error : %s\n", TFC_NET_GetErrorMsg(errorNO));
//停止运行
return -1;
}
return lUserID;
}
生成dll在VB6中调用:
Private Declare Function getlUserID Lib "Serverdll.dll" (ByVal ip As String, ByVal name1 As String, ByVal Password As String, ByVal port As Integer) As Long
    Dim ip As String
    Dim name1 As String
    Dim Password As String
    Dim port As IntegerPrivate Sub Command1_Click()
    MsgBox "测试开始"
    
    ip = "192.168.0.120"
    name1 = "admin"
    Password = "admin"
    port = 1115
    lUserID = getlUserID(ip, name1, Password, port)
    
    MsgBox lUserID
    
    MsgBox "测试结束"
End Sub运行的时候报错 :实时错误‘453’ 找不到DLL入口点 getlUserID in Serverdll.dll
帮忙我看看是什么原因 ,我刚接触这东东 实在百度不出来了

解决方案 »

  1.   

    按理说不会,检查下你的系统中是否存在另一个早期版本的Serverdll.dll,并且它没有getlUserID。
      

  2.   

    Private Declare Function getlUserID Lib "Serverdll.dll" (ByVal ip As String, ByVal name1 As String, ByVal Password As String, ByVal port As Integer) As Long
    这个声明有点问题
    Private Declare Function getlUserID Lib "Serverdll.dll" (ByVal ip As String, ByVal name1 As String, ByVal Password As String, ByVal port As long) As Long另外,你必须将dll放进系统目录下
      

  3.   

    重要的一点在C下函数有没有定义输出名称,比如:
    getlUserID @1
      

  4.   

    可不可以把你的那个 DLL 上传来看看?
      

  5.   

    我在VB6中声明 少了Alias "_getlUserID@16" 这句 
      

  6.   

    一般情况下不需要这样做,除非你需要隐藏你的函数入口点。在 .def 文件中声明:getlUserID @16即可。