【问题标题】:Undefined Reference to RasDialA (with ras.h included)未定义对 RasDialA 的引用(包括 ras.h)
【发布时间】:2012-07-01 06:01:01
【问题描述】:

我阅读了 Microsoft 的所有文档,但他们声称它应该在没有任何额外库的情况下工作。谷歌搜索一个小时没有结果。我的代码:

#include <windows.h>
#include <ras.h>

int main()
{
    char* szPhoneNumberToDial = "127.0.0.1";
    char* szUserName = "test";
    char* szPassword = "test";
    RASDIALPARAMS rdParams;
    rdParams.dwSize = sizeof(RASDIALPARAMS);
    rdParams.szEntryName[0] = '\0';
    lstrcpy(rdParams.szPhoneNumber, szPhoneNumberToDial);
    rdParams.szCallbackNumber[0] = '\0';
    lstrcpy( rdParams.szUserName, szUserName );
    lstrcpy( rdParams.szPassword, szPassword );
    rdParams.szDomain[0] = '\0';

    HRASCONN hRasConn = NULL;
    DWORD dwRet = RasDial(NULL, NULL, &rdParams, 0L, NULL, &hRasConn);
}

错误:

undefined reference to 'RasDialA@24'

我尝试了 C 和 C++ 实现(在 VC++ 2010 和 MinGW/gcc & g++ 中),但它们都导致了同样的错误。

有什么想法吗?

【问题讨论】:

    标签: c windows header-files vpn ras


    【解决方案1】:

    according documentation,对RasDial()使用的要求,还有Ras.h 标头,是Rasapi32.lib 库。如果这在您的编译器上可用,请使用

    上的 -l 选项将其传递给链接

    gcc

    gcc foo.c -lRasapi32
    

    编辑:感谢@Mark Wilkins,它为

    提供了命令行

    微软编译器

    cl foo.c rasapi32.lib
    

    【讨论】:

    • +1(或者如果使用 Microsoft 编译器,则为:cl foo.c rasapi32.lib)。
    • 非常感谢!很抱歉我没听懂,我以为 rasapi32.libras.h 所固有的,但我错了。
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多