В настоящее время я работаю над C ++ / WinRt, который подключает (Отправитель) к одному из доступных устройств (Клиент) вокруг указанного c региона с помощью WifiDirect. Когда устройство хочет подключиться, оно отправляет запрос на подключение отправителю. Отправитель должен обнаружить запрос на подключение, отправленный клиентом, и подключиться к клиенту. Для этого мне нужно добавить событие - (по запросу подключения). Как только я добавлю, он должен выполнить код OnConnectionRequested.
#include "pch.h"
#include <winrt/Windows.Foundation.Collections.h>
#include "winrt/Windows.Devices.WiFiDirect.h"
#pragma once
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::Devices::WiFiDirect;
using namespace Windows::Storage::Streams;
using namespace winrt::Windows::Devices::WiFiDirect;
using namespace winrt::Windows::Devices::Enumeration;
enum class NotifyType
{
StatusMessage,
ErrorMessage
};
enum class CallbackContext
{
Any,
Same
};
class st
{
public:
void OnConnectionRequested(WiFiDirectConnectionListener sender,
WiFiDirectConnectionRequestedEventArgsconnection EventArgs)
{
WiFiDirectConnectionRequest connectionRequest = connectionEventArgs.GetConnectionRequest();
printf("Connection request received from ", connectionRequest.DeviceInformation().Name(), "Connection Request");
printf("Connecting to ", connectionRequest.DeviceInformation().Name(), NotifyType::StatusMessage);
}
void start()
{
Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisher _publisher;
Windows::Devices::WiFiDirect::WiFiDirectConnectionListener _listener;
winrt::event_token _connectionRequestedToken;
try
{
_connectionRequestedToken = _listener.ConnectionRequested({this, &st::OnConnectionRequested});
_publisher.Start();
printf("Advertisement started, waiting for StatusChangedcallback...", NotifyType::StatusMessage);
}
catch (...)
{
printf("Error starting Advertisement: ", NotifyType::ErrorMessage);
}
getchar();
}
};
int main()
{
st s;
s.start();
}
Это правильный способ добавить событие в C ++ / WinRt:
_connectionRequestedToken = _listener.ConnectionRequested({this, &st::OnConnectionRequested});
Ошибки:
LNK1120 1 неразрешенные внешние данные - ошибка в файле Winrt.exe
LNK2019 неразрешенный внешний символ "publi c: struct winrt :: hstring __thiscall winrt :: impl :: consumer_Windows_Devices_Enumeration_IDeviceInformation :: Name (void) const "(? Name @? $consume_Windows_Devices_Enumeration_IDeviceInformation@UIDeviceInformation@Enumeration@Devices@Windows@winrt@@@impl@winrt@@QBE? AUhstring@3@XZ), на который ссылается функция" publi c: void __thiscall st :: OnConnectionRequested (struct winrt :: Windows :: Devices :: WiFiDirect :: WiFiDirectConnectionListener , struct winrt :: Windows :: Devices :: WiFiDirect :: WiFiDirectConnectionRequestedEventArgs) "(? OnConnectionRequested@st@@QAEXUWiFiDirectConnectionListener@WiFiDirect@Devices@Windows@winrt@@UWiFiDirectConnectionRequestedEventArgs@3456@@Z) - ошибка в Program.obj 1
Какие изменения я должен внести в эту строку очистить ошибку? Что на самом деле означает ошибка? Или есть другой способ добавить событие в проект C ++ / WinRt?