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

protoc转换Swift文件失败:‘google.type.LatLng’未定义问题求助

解决protoc无法找到google/type/latlng.proto依赖的问题

别担心,这个问题其实是因为google/type下的这类类型不属于Protocol Buffers核心库(核心库是google/protobuf/*这类官方基础类型),所以protoc默认不会包含它们的搜索路径,咱们一步步来解决:

1. 准备Google Type的proto文件

首先你需要获取google/type/latlng.proto以及其他你用到的同系列依赖文件。你可以拿到对应版本的官方proto定义文件,然后在项目里创建匹配的目录结构——比如新建third_party/google/type/目录,把latlng.proto放在这个路径下,这样目录结构就和你proto里的import "google/type/latlng.proto"语句完全对应了。

2. 修改protoc命令,添加依赖搜索路径

原来的protoc命令没有指定第三方proto的搜索目录,现在需要用--proto_path(或简写-I)参数告诉protoc去哪里找这些依赖。假设你的第三方proto放在当前项目的third_party目录下,修改后的命令如下:

protoc -I=. -I=./third_party --swift_out=. my_proto_file.proto
  • -I=.:指定当前目录作为搜索路径,用于找到你自己的my_proto_file.proto
  • -I=./third_party:指定第三方依赖的根目录,这样protoc就能定位到third_party/google/type/latlng.proto,匹配你的import语句

3. 额外注意点

  • 确保你下载的latlng.proto版本和你的protoc版本(libprotoc 3.13.0)兼容,避免因语法差异出现新错误
  • 如果你的proto里还用到了其他google/type下的类型,比如google/type/date.proto,也要把对应的proto文件放到third_party/google/type/目录下
  • 执行命令后,protoc不仅会生成my_proto_file对应的Swift文件,还会生成latlng.proto对应的Swift文件,记得把这些生成的文件都添加到你的Swift项目中,不然代码会找不到google.type.LatLng对应的Swift类型

这样调整之后,protoc就能正确找到所有依赖,顺利生成你需要的Swift文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:02:27