Приложение win10 UWA: с помощью winsock2, ws2bth.h игнорируется компилятором: BTHPROTO_RFCOMM не найден

Я пытаюсь создать соединение Bluetooth между моим ПК и целевым устройством, используя winsock2 API. Я создал новое универсальное приложение для Windows (C ++) с VS 2015 и начал реализовывать код, который я уже использовал ранее, с приложением win32 и прекрасно работал в MainPage.xaml.cpp.

Я получил ошибку: идентификатор BTHPROTO_RFCOMM и SOCKADDR_BTH не определены. Они оба определены внутри ws2bth.h и включены в мой код.

Я не могу найти причину, почему мой код не работает, не нашел ничего о ws2bth.h, не работающем с Univeral Windows App.

Надеюсь, вы можете помочь мне здесь.

-Кристиан

Изменить: я могу перейти к определению, щелкнув правой кнопкой мыши на BTHPROTO_RFCOMM в моем файле MainPage.xaml.cpp, но ошибка остается.

#define WIN32_LEAN_AND_MEAN 1

#include "pch.h"#include "MainPage.xaml.h"#include <stdio.h>
#include <winsock2.h>
#include <ws2bth.h>

#pragma comment(lib, "ws2_32.lib")

SOCKET clientSocket;

using namespace MoodlightControl;

using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;MainPage::MainPage()
{
InitializeComponent();
}

int startWinsock() {
WORD wVersionRequested;
WSADATA wsaData;
int err;

// Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);

if (err != 0)
return 0;// Check, if Winsock2.2.dll supported
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
WSACleanup();
return 0;
}

else
return 1;
}

int connect() {
clientSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);

if (clientSocket == INVALID_SOCKET)
return 1;

SOCKADDR_BTH bth_addr;

bth_addr.addressFamily = AF_BTH;
bth_addr.btAddr = 0x98D331FD02D9;
bth_addr.port = 1;

if (connect(clientSocket, (struct sockaddr *) &bth_addr, sizeof(SOCKADDR_BTH)) == SOCKET_ERROR) {
return 1;
}
return 0;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]