纳米条封装选项在导入时引发错误



我正在与纳米b作斗争,以获得在中具有* mangle_names:M_STRIP_PACKAGE的另一个包的enum。文件的选项。下面是一个很容易重现这个问题的方法:

我有一个包含folder_A和folder_B的root_folder。在folder_A中,我有file_A。proto和file_A。选择:

file_A.proto:

syntax = "proto2";
package folder_A;
enum my_enum {
ENUM_0 = 0;
ENUM_1 = 1;
ENUM_2 = 2;
}

file_A.options:

* mangle_names:M_STRIP_PACKAGE

在folder_B,我有file_B。原型:

syntax = "proto2";
package folder_B;
import "folder_A/file_A.proto";
message dummy  {
required folder_A.my_enum value  = 1;
}

我尝试用以下命令生成proto文件:

nanopb_generator.py -D . -I . -I .folder_B .folder_Afile_A.proto .folder_Bfile_B.proto

脚本失败,出错Exception: Could not find enum type folder_A_my_enum while generating default values for folder_B_dummy.

但是如果我删除file_A。选项,它工作正常。此外,如果我用消息替换enum,即使使用file_A.options也能正常工作。

我的问题是:您知道是否可以同时使用选项* mangle_names:M_STRIP_PACKAGE和导入enum吗?

我用的是纳米b-0.4.5。

谢谢你!

当前M_STRIP_PACKAGE不能在从另一个包导入时工作。我已经将问题添加到问题跟踪器:https://github.com/nanopb/nanopb/issues/783

只要所有导入的文件属于同一个包并且具有相同的名称混淆设置,那么带有名称混淆的导入似乎可以正常工作。

当使用多个包名时,从类型中剥离包名是否是个好主意也是值得怀疑的。这听起来像是名字冲突的配方。

相关内容

最新更新