Windows Server 2008 r2 上 BluetoothGetRadioInfo 的替代方案

Posted

技术标签:

【中文标题】Windows Server 2008 r2 上 BluetoothGetRadioInfo 的替代方案【英文标题】:Alternative to BluetoothGetRadioInfo on Windows Server 2008 r2 【发布时间】:2014-04-18 15:58:51 【问题描述】:

我有一个基于运行 2008 r2 的 Jenkins CI 服务器构建的 C++ Windows 蓝牙应用程序。该应用程序构建良好并在安装了 Microsoft 蓝牙堆栈的机器上运行。不幸的是,Server 2008 r2 不支持蓝牙,这会阻止我们在构建服务器上执行 gtest 单元测试项目。

单元测试本身不使用蓝牙堆栈,但由于其他库代码包含对 BluetoothFindFirstRadio 和 BluetoothGetRadioInfo 的调用,单元测试应用程序根本不会运行。这些调用在 bthprops.cpl 中实现,而 Windows Server 2008 r2 中没有。

所以我可以通过多种方式解决这个问题,但遗憾的是我无法找到以下任何问题的答案:

    除了 BluetoothGetRadioInfo 之外,还有其他获取本地蓝牙设备地址的方法吗?这将允许我打破对 bthprops.cpl 的链接依赖。

    有没有办法让 Windows Server 2008 认为 bthprops.cpl 库在机器上?或者甚至诱使我的单元测试可执行文件认为它存在以便它可以执行?

    有没有办法在编译时识别我在 Windows Server 上,以便我可以 #ifdef 这些函数从我的单元测试项目中出来?

【问题讨论】:

附加信息:单元测试 exe 失败并弹出一个窗口并显示消息“程序无法启动,因为您的计算机中缺少 bthprops.cpl。请尝试重新安装程序以解决此问题。” exe的返回码是-1073741515 (C0000135) 【参考方案1】:

我建议您使用LoadLibrary/FreeLibrary和GetProcAddress来获取BluetoothFindFirstRadio/BluetoothGetRadioInfo/...的函数指针,这样您的应用程序就可以正常运行而不会出现系统错误(“The program can't start because bthprops.cpl is missing from您的计算机。尝试重新安装程序以解决此问题。") 无论是否存在 bthprops.cpl。

【讨论】:

以上是关于Windows Server 2008 r2 上 BluetoothGetRadioInfo 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

windows server 2008 r2服务器上怎么搭建ftp连不上

如何在我的 windows 2008 Server 2008 R2 上安装 pdo_sqlsrv? [关闭]

windows server 2008 r2 iso下载

WIndows Server 2008R2一卡一卡的

如何硬盘安装windows server 2008 r2

无法在 Windows Server 2008 R2 上启动 Apache