程序如下:
static BOOL PerformInquiry()
{
WSAQUERYSET wsaq;
HANDLE hLookup;
union {
CHAR buf[5000];
double __unused; // ensure proper alignment
};
LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;
DWORD dwSize = sizeof(buf);
BOOL bHaveName;
ZeroMemory(&wsaq, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL;
if (ERROR_SUCCESS != WSALookupServiceBegin (&wsaq, LUP_CONTAINERS, &hLookup))
{
DWORD dwError = GetLastError();
wprintf(L"WSALookupServiceBegin failed %d\r\n", GetLastError());
return FALSE;
}
ZeroMemory(pwsaResults, sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
while (ERROR_SUCCESS == WSALookupServiceNext (hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults))
{
ASSERT (pwsaResults->dwNumberOfCsAddrs == 1);
//BT_ADDR b = ((SOCKADDR_BTH *)pwsaResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;
bHaveName = pwsaResults->lpszServiceInstanceName && *(pwsaResults->lpszServiceInstanceName);
//wprintf (L"%s%s%04x%08x%s\n", bHaveName ? pwsaResults->lpszServiceInstanceName : L"",
// bHaveName ? L"(" : L"", GET_NAP(b), GET_SAP(b), bHaveName ? L")" : L"");
OutputDebugStringW(pwsaResults->lpszServiceInstanceName);
OutputDebugStringW(L"\n");
}
WSALookupServiceEnd(hLookup);
return TRUE;
}
出错:
: error C2664: 'OutputDebugStringW' : cannot convert parameter 1 from 'char *' to 'const unsigned short *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
如何解决呢?网上查了很多这个错误的解决方法,可结果五花八门,疯掉了要
static BOOL PerformInquiry()
{
WSAQUERYSET wsaq;
HANDLE hLookup;
union {
CHAR buf[5000];
double __unused; // ensure proper alignment
};
LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf;
DWORD dwSize = sizeof(buf);
BOOL bHaveName;
ZeroMemory(&wsaq, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL;
if (ERROR_SUCCESS != WSALookupServiceBegin (&wsaq, LUP_CONTAINERS, &hLookup))
{
DWORD dwError = GetLastError();
wprintf(L"WSALookupServiceBegin failed %d\r\n", GetLastError());
return FALSE;
}
ZeroMemory(pwsaResults, sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
while (ERROR_SUCCESS == WSALookupServiceNext (hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults))
{
ASSERT (pwsaResults->dwNumberOfCsAddrs == 1);
//BT_ADDR b = ((SOCKADDR_BTH *)pwsaResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;
bHaveName = pwsaResults->lpszServiceInstanceName && *(pwsaResults->lpszServiceInstanceName);
//wprintf (L"%s%s%04x%08x%s\n", bHaveName ? pwsaResults->lpszServiceInstanceName : L"",
// bHaveName ? L"(" : L"", GET_NAP(b), GET_SAP(b), bHaveName ? L")" : L"");
OutputDebugStringW(pwsaResults->lpszServiceInstanceName);
OutputDebugStringW(L"\n");
}
WSALookupServiceEnd(hLookup);
return TRUE;
}
出错:
: error C2664: 'OutputDebugStringW' : cannot convert parameter 1 from 'char *' to 'const unsigned short *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
如何解决呢?网上查了很多这个错误的解决方法,可结果五花八门,疯掉了要
解决方案 »
- VC如何实现鼠标放在位图按钮上时,按钮显示另外一张图片?
- 请问,我在Socket工作线程中访问数据库类的时候线程为什么会丢失?
- 在mfc ext dll中导出类不成功,请教大家!!!
- 是行家的进
- 小弟我想买一台打印机,然后把网上的一些经典的编程电子书分章节打印下学习,不知道可行否,大家有没有很好的解决方案?
- 关于多文档的几个问题
- 如何禁止一个特定的程序的运行?
- 动态添加树控件图标 列表控件跟树控件交互
- 我要哭啦!API 高手快来指点我呀!我要没命啦!救我呀!怎么用 SDK (windows api 编程)来实现多文档窗体的菜单功能,怎样来编写这个菜单??
- DCOM设置问题?
- VC对WORD编程,通过MS提供的类型库操纵WORD,如果想在WORD插入EXCEL表格,图表,附件,并且要控制文字编号,不知各位大虾有没有相应的例子,砸上来供偶参考下,感激不尽。。。
- 初学COM,不知道CO_E_ERRORINDLL怎么解决
看过了。
估计你的工程不是 UNICODE 工程;而 OutputDebugStringW 需要宽字符串;
把你的工程改成 UNICODE 就好了;
或者实现非 UNICODE 的 OutputDebugStringW 函数。
WINBASEAPI VOID WINAPI OutputDebugStringW( LPCWSTR lpOutputString );
#ifdef UNICODE
#define OutputDebugString OutputDebugStringW
#else
#define OutputDebugString OutputDebugStringA
#endif // !UNICODE