VS2012 用RasDial结果返回 "检测到一个不正确的结构大小" VS2010正常,怎解?!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2012 用RasDial结果返回 "检测到一个不正确的结构大小" VS2010正常,怎解?!相关的知识,希望对你有一定的参考价值。

VS2012 用RasDial结果返回 "检测到一个不正确的结构大小" VS2010正常,怎解?!

结构大小不对,平台有关,VS2012得在stdafx.h文件中,定义一个#define WINVER 0X0501 即可 参考技术A 结构大小

你测试一下看看结构大小到底是多少
sizeof(structName)

有些字节对齐等方式不同
参考技术B

RASDIALPARAMS 这个结构体大小获取正确吗?对这个结构体设置有没有完成?

DWORD dwRet = RasDial(NULL,NULL,&ResDialRaram,0xFFFFFFFF,hWnd,&hResconn);

这样调用后,出现的是弹出对话框说一个不正确的结构大小吗?可能是你结构体没有初始化好。

追问

追答BOOL DialUp(HWND hwnd)
 
 RASDIALPARAMS RasDialParams;
 TCHAR RasEntryName[256];
 GetDlgItemText(hwnd,IDC_COMBO2,RasEntryName,sizeof(RasEntryName));
 RasDialParams.dwSize=sizeof(RASDIALPARAMS);
 TCHAR UserName[256];
 TCHAR Password[256];
 GetDlgItemText(hwnd,IDC_COMBO1,UserName,sizeof(UserName));
 GetDlgItemText(hwnd,IDC_EDIT1,Password,sizeof(Password));
 StringCchCopy(RasDialParams.szEntryName,sizeof(RasDialParams.szEntryName),RasEntryName);
 StringCchCopy(RasDialParams.szUserName,sizeof(RasDialParams.szUserName),UserName);
 StringCchCopy(RasDialParams.szPassword,sizeof(RasDialParams.szPassword),Password);
 DWORD dwRet;
 dwRet=RasDial(NULL,NULL,&RasDialParams,0xFFFFFFFF,hwnd,&handle);
 if (dwRet)
 
    retrun FAILS; 
 
//TODO:在此添加你的其它代码。 
return TRUE; 

以上代码是我很早以前写的Win32应用程序里的,可以参考一下。

同时对比你的代码,似乎差不多,我这里的RasEntryName是自己枚举出来的,如果未找到指定名称的入口名称,那么自己创建并设为默认。

你单步执行一下,看看到RasDial之前,RasDialParams的值是否正确(包括指针)。

参考技术C 配置属性的问题,你仔细比较下,就知道问题所在

用vs调试c++,想在输出窗口那里看见指定变量的值,该怎么写?

设断点感觉繁琐了.
能不能写一行代码,让运行那一行时,就在vs的输出窗口里,显示出一行内容?
想在vs界面的"输出"窗口那里看见指定变量的值,该怎么写?

参考技术A

两种方法:

    如果用了 MFC 的话,可以使用 TRACE(_T("x = %d\\n"), x); 这种写法,类似的还有 TRACE0(); TRACE1(); 之类的,都是 TRACE 的扩展。

    可以设置日志断点,这种断点不会断住,但是会在输出窗口打印 log。具体操作是先打上一个普通断点,然后右击,不同 vs 版本名字不一样,VS 2013 是选择 "When hit...",我用的英文版。然后,会弹出一个设置框,按照它给的提示设置就好了。你只要输入要打印的信息,然后勾上继续运行就能达到你要的效果。设置成功的话,你会发现断点变成菱形的了。

以上是关于VS2012 用RasDial结果返回 "检测到一个不正确的结构大小" VS2010正常,怎解?!的主要内容,如果未能解决你的问题,请参考以下文章

做实验用vs2012写了个ArcGIS的add-in插件

如何在rasdial中保存密码?

【ASP.NET】VS2012 ashx不能处理html页面

VS2012做的网页如何在vs2008上正常运行

更改过电脑时间后 vs2010运行不出正确结果 是啥原因

为啥我在vs 2012 写c++的时候 定义一个常量,值是中文会报错,error: C2001: 常量中有换行符?