我正在与纳米粒子斗争,以获得另一个包的枚举,其中有* mangle_names:M_STRIP_PACKAGE在.options文件中。下面是一种简单地再现问题的方法:
我有一个root_folder,包含folder_A和folder_B。在folder_A中,有file_A.proto和file_A.options:
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.proto:
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_A\file_A.proto .\folder_B\file_B.proto
错误Exception: Could not find enum type folder_A_my_enum while generating default values for folder_B_dummy.导致脚本失败
但是如果我删除了file_A.options,它就能正常工作。另外,如果我用一条消息替换枚举,那么即使在file_A.options中,它也能正常工作。
我的问题是:您知道是否可以同时使用* mangle_names:M_STRIP_PACKAGE选项和导入枚举?
我用的是纳米粒子-0.4.5。
谢谢!
发布于 2022-06-06 17:29:56
当前,当有来自另一个包的导入时,M_STRIP_PACKAGE无法工作。我已经将问题添加到问题跟踪器:https://github.com/nanopb/nanopb/issues/783中
只要所有导入的文件都属于同一个包,并且具有相同的名称mangling设置,带有名称mangling的导入看起来就会正常工作。
同样值得怀疑的是,当您使用多个包名时,从类型中去掉包名是否是一个好主意。这听起来像是名字碰撞的秘方。
https://stackoverflow.com/questions/72520392
复制相似问题