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连不上