В настоящее время я работаю над C++/WinRt, который подключается (отправитель) к одному из доступных устройств (клиент) в определенном регионе с помощью 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 @QBE?AUhstring@3@XZ), на который ссылается функция public: 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?