我当前操作系统是winXP,
我用ras建立了一个连接,想得到当前连接流量和连接时间,
于是用RasGetLinkStatistics函数.可是为什么我在编译时在API中没有找到此函数。请问如果解决???注意,我已把ras.h、Rasdlg.h、Raserror.h都包含了

解决方案 »

  1.   

    错误信息是什么?
    是不是没导入Rasapi32.lib库?
      

  2.   

    代码:RAS_STATS  lStatus;
    DWORD Temp;RasGetLinkStatistics(m_hRasConn, Temp, &lStatus);错误信息是:[C++ Error] cmd_main.cpp(5395): E2451 Undefined symbol 'RAS_STATS'
    [C++ Error] cmd_main.cpp(5395): E2379 Statement missing ;
    [C++ Error] cmd_main.cpp(5398): E2268 Call to undefined function 'RasGetLinkStatistics'
    [C++ Error] cmd_main.cpp(5398): E2451 Undefined symbol 'lStatus'
      

  3.   

    把Rasapi32.dll的输出表导出来就有这个函数.
      

  4.   

    把Rasapi32.dll放到你程序编译生成.exe的文件夹下.
    #pragma comment(lib, "Rasapi32.dll") 导入Rasapi32.dll.
    然后就可以用相应的结构和函数了.
      

  5.   

    此文件我在哪里可以得到Rasapi32.dll??
      

  6.   

    my_girlf兄弟。我导入了还是不行喔
      

  7.   

    LZ用的是VC6吧?
    VC6中没有相关的定义。需要自己定义函数类型和用到的结构,然后动态载入Rasapi32.dll(LoadLibrary、GetProcAddress)。
      

  8.   

    cnzdgs兄弟,我用的是BCB6.0我去试试但为什么我可以调用RasEnumDevices、RasEnumConnections、RasGetEntryProperties等函数。。他们应该都在同一个库里边吧~
      

  9.   

    在VC中是同一个库里面,BCB没用过,不清楚。
    用LoadLibrary的方法一定可以。
      

  10.   

    cnzdgs兄弟,我用你教我的方法,可是在链接时出现下面错误[Linker Error] Error processing module E:\Tools\RASAPI32.DLL“E:\Tools\RASAPI32.DLL”这是我工程下的目录
      

  11.   

    会不会与路径名称有关?你把目录名中的.dll去掉试试。
      

  12.   

    谢谢cnzdgs兄弟热心帮我,现在调用RasGetLinkStatistics函数已经没问题了。。可是我调用RasGetLinkStatistics老返回错误信息。请帮忙看看以下代码有什么问题.typedef DWORD (pnf_RasGetLinkStatistic)  (  HRASCONN hRasConn, DWORD dwSubEntry, RAS_STATS* lpStatistics );
    HINSTANCE  hPB_DLL = NULL;
    RAS_STATS  lStatus;
    DWORD nTemp = 0;
    pnf_RasGetLinkStatistic *pTemp;   hPB_DLL = LoadLibrary( "rasapi32.dll" ); //装载DLL文件
        memset(&lStatus, 0, sizeof(lStatus)); //初始化结构    lStatus.dwSize = sizeof(RAS_STATS);     if(hPB_DLL != NULL && m_hRasConn != NULL) //当前处理连接状态并且装载DLL文件成功
        {
            pTemp = (pnf_RasGetLinkStatistic*) GetProcAddress(hPB_DLL, "RasGetLinkStatistics");
    if(NULL == pTemp)
                printf("Error");
            else
            {
                iRet = pTemp(m_hRasConn, nTemp, &lStatus); //m_hRasConn 连接句柄,nTemp应该传些什么值?
                if(ERROR_SUCCESS == iRet)
                    printf("ERROR_SUCCESS");
                else
                    printf("Other");        }
        }
      

  13.   

    nTemp应该给RASCONN结构中的dwSubEntry,是从1开始的,不能给0。
      

  14.   

    谢谢。原来如此。。我明白啦非常感谢cnzdgs。。