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);这样调用后,出现的是弹出对话框说一个不正确的结构大小吗?可能是你结构体没有初始化好。
追问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界面的"输出"窗口那里看见指定变量的值,该怎么写?
两种方法:
如果用了 MFC 的话,可以使用 TRACE(_T("x = %d\\n"), x); 这种写法,类似的还有 TRACE0(); TRACE1(); 之类的,都是 TRACE 的扩展。
可以设置日志断点,这种断点不会断住,但是会在输出窗口打印 log。具体操作是先打上一个普通断点,然后右击,不同 vs 版本名字不一样,VS 2013 是选择 "When hit...",我用的英文版。然后,会弹出一个设置框,按照它给的提示设置就好了。你只要输入要打印的信息,然后勾上继续运行就能达到你要的效果。设置成功的话,你会发现断点变成菱形的了。
以上是关于VS2012 用RasDial结果返回 "检测到一个不正确的结构大小" VS2010正常,怎解?!的主要内容,如果未能解决你的问题,请参考以下文章