如何使用Bazel在Windows上使用C ++ API库进行编程?

Gui*_*ist 9 c++ dll bazel tensorflow

我想做的事

首先,我的目标是使用Tensorflow C ++ API作为Windows上的库,这是我的项目的一部分,而不是在Tensorflow中构建我的项目。

背景

我通过使用CMake构建Tensorflow实现了这一目标。但是,从Tensorflow 1.10起,不建议使用CMake进行构建,而建议使用Bazel。但是使用C ++ API的官方方法是使用 Bazel在Tensorflow内部构建项目。因此,这种方式对我不利。

我做了什么

为了使用新版本的Tensorflow,我一直在尝试使用Bazel作为独立库构建Tensorflow。

一些维护者表示,可以通过在官方教程中替代//tensorflow/tools/pip_package:build_pip_package来实现。但实际上我遇到了一些问题,并通过阅读本教程解决了这些问题。现在我已经成功建造了。//tensorflow:libtensorflow_cc.solibtensorflow_cc.so

问题是什么

但是,我不知道下一步如何使用生成的结果。而这正是我的问题所在。当然没有文档。我只发现了一些不完整的想法,我将展示所有这些想法,以为您提供更多信息:

肯定有像我这样的人正在努力解决类似的问题。我希望这个问题可以为解决该问题提供方法。

oma*_*tai 3

自提出这个问题以来已经过去 2 年多了,但消息并不:似乎没有足够的 Windows 技能人员来提供支持,使用熟悉的标头 + 库模型将 Tensorflow 集成到 Windows 应用程序中。而 Tensorflow 逐周进步,这意味着 Windows 支持进一步落后。

根据我的评估,由于文档不足,目前在 Windows 上进行构建的道路受到阻碍。与其说“当然没有文档”,正如 OP 所言,不如说稀疏的文档分布在数十个单独的帖子中,每个帖子都随着 Tensorflow 沿着 Windows C++ 以外的路径不断发展而快速发展。

我最初对一个类似的问题给出了这个答案,但昨天用以下建议更新了它:

  • Windows是微软的产品,所以看看微软在做什么
  • 您可以通过至少 3 种方式在 Windows 上使用 C++ 实现 (ONNX) 模型:

我们没有最新或最好的硬件(例如,我们有 Intel 显卡),但已经能够获得基于 Onnx 运行时的解决方案,该解决方案可以在大约 20 毫秒内对 224 x 224 RGB 图像进行分类。我们发现 Windows ML 路径更难以处理遗留代码,而且运行速度也更慢。