などの Bluetooth API に関する Microsoft のドキュメントではBluetoothGetDeviceInfo
、静的インポートまたは動的インポートを使用してこれらの関数を呼び出す手順が説明されています。
とリンクする静的インポートはbthprops.lib
正常に機能します。
#include <windows.h>
#include <BluetoothAPIs.h>
#include <iostream>
int main(int argc, char** argv)
{
BLUETOOTH_DEVICE_INFO binfo = {};
binfo.dwSize = sizeof binfo;
binfo.Address.ullLong = 0xBAADDEADF00Dull;
auto result = ::BluetoothGetDeviceInfo(nullptr, &binfo);
std::wcout << L"BluetoothGetDeviceInfo returned " << result
<< L"\nand the name is \"" << binfo.szName << "\"\n";
return 0;
}
しかし、ドキュメントによると Windows XP SP2 より前のバージョンではサポートされていないため、これはウルトラポータブル コードでは理想的ではありません。したがって、動的リンクを使用して、欠落している機能から回復する必要があります。ただし、bthprops.dll
MSDN ドキュメントで指示されている動的読み込みは失敗します。
decltype(::BluetoothGetDeviceInfo)* pfnBluetoothGetDeviceInfo;
bool LoadBthprops( void )
{
auto dll = ::LoadLibraryW(L"bthprops.dll");
if (!dll) return false;
pfnBluetoothGetDeviceInfo = reinterpret_cast<decltype(pfnBluetoothGetDeviceInfo)>(::GetProcAddress(dll, "BluetoothGetDeviceInfo"));
return pfnBluetoothGetDeviceInfo != nullptr;
}
これらの関数にどのように動的にリンクする必要がありますか?