You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bazel能否构建DLL?构建时expdtctlib.dll缺失求助

解决Bazel编译时DLL缺失的问题

我来帮你搞定这个困扰你几天的Bazel编译DLL问题!

问题根源

你在expdetect目标的data字段里直接写了:expdtctlib.dll,这是错误的引用方式。Bazel构建共享库(DLL)时,不会直接在当前包目录生成你指定的同名文件,而是将输出放在自身的构建缓存目录中,而且正确的依赖引用应该使用目标标签,而非硬编码的文件名。

修改后的BUILD文件

把你的BUILD文件调整成下面这样,重点修改expdetect的data字段:

cc_binary(
    name = "expdtctlib",
    srcs = ["expdtctlib.cpp"],
    deps = [
        "//tensorflow/core:tensorflow",
    ],
    linkshared = 1,
)
cc_binary(
    name = "expdetect",
    srcs = ["expdetect.cpp"],
    # 使用目标标签引用共享库,而非硬编码文件名
    data = [":expdtctlib"],
    deps = [
        "//tensorflow/core:tensorflow",
    ],
)

额外注意事项

  • 如果你在expdetect.cpp中是通过硬编码路径加载DLL的,建议改为加载当前目录下的expdtctlib.dll——Bazel会自动将依赖的DLL复制到与expdetect二进制文件相同的输出目录中,这样运行时就能正确找到它。
  • 重新执行bazel build :expdetect,Bazel会自动处理共享库的构建和依赖复制,不会再出现DLL缺失的报错。

内容的提问来源于stack exchange,提问作者cgc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:54:14