【发布时间】:2018-04-05 05:00:38
【问题描述】:
我已经尝试使用 bazel 编译 DLL 好几天了。 我按照示例bazel build 希望生成一个DLL。 我使用的BUILD文件如下:
cc_binary(
name = "expdtctlib",
srcs = ["expdtctlib.cpp"],
deps = [
"//tensorflow/core:tensorflow",
],
linkshared = 1,
)
cc_binary(
name = "expdetect",
srcs = ["expdetect.cpp"],
data = [":expdtctlib.dll"],
deps = [
"//tensorflow/core:tensorflow",
],
)
我运行了命令:
bazel build :expdetect
但错误提示“expdtctlib.dll”丢失。 不要bazel先生成“expdtctlib.dll”再编译“expdetect.cpp”?
另外,我尝试用另一种方式构建DLL。BUILD文件如下:
cc_library(
name = "ExpDetector",
srcs = ["ExpDetector.cc"],
hdrs = ["ExpDetector.h"],
deps = [
"//tensorflow/core:tensorflow",
],
)
cc_binary(
name = "expdetect",
srcs = ["expdetect.cc"],
deps = [
"//tensorflow/core:tensorflow",
":ExpDetector",
],
)
经过长时间的编译,虽然输出了一个EXE文件并且运行良好,但我只能找到.lib和.exp文件,但找到了.dll文件。
有没有人成功使用 bazel 构建 DLL?我需要你的帮助。
【问题讨论】:
-
Bazel 源代码树中有一个“hello world”DLL 示例:
examples/windows/dll。 -
@jdehesa 感谢您的帮助。现在事实是,bazel 只输出 .lib 文件和 .exp 文件,但 .dll 文件也很重要。
-
我不确定您的情况,但我只是运行了 hello world DLL 示例的快速测试构建,它似乎在
bazel-out中正确输出了.exp和.dll文件。 -
顺便说一句,如果我从我读过的点点滴滴中正确理解(例如here),似乎通常的
.lib文件是由Bazel生成的,扩展名为.ifso,它应该代表“接口共享对象”之类的东西(基本上是.lib文件是什么,但作为一个一般概念)。 -
@jdehesa 非常感谢!我已经解决了问题。
标签: c++ tensorflow dll bazel