【问题标题】:Alternative to BluetoothGetRadioInfo on Windows Server 2008 r2Windows Server 2008 r2 上 BluetoothGetRadioInfo 的替代方案
【发布时间】: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 中没有。

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

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

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

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

【问题讨论】:

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

标签: c++ unit-testing jenkins bluetooth


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2011-12-20
    • 2023-03-03
    相关资源
    最近更新 更多