首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

生成的PROTOBUF_INTERNAL_EXPORT不包含导入的子目录

问题分析

PROTOBUF_INTERNAL_EXPORT 是 Protocol Buffers(protobuf)库中的一个宏,用于控制 protobuf 文件生成的 C++ 头文件中的符号导出。如果你发现生成的 PROTOBUF_INTERNAL_EXPORT 不包含导入的子目录,可能是由于以下几个原因:

  1. protobuf 编译器版本问题:不同版本的 protobuf 编译器可能会有不同的行为。
  2. protobuf 文件配置问题:protobuf 文件中的 packageimport 语句可能配置不正确。
  3. 编译选项问题:编译 protobuf 文件时使用的选项可能不正确。

解决方法

1. 检查 protobuf 编译器版本

确保你使用的 protobuf 编译器版本是最新的,或者至少是稳定的版本。你可以通过以下命令检查 protobuf 编译器的版本:

代码语言:txt
复制
protoc --version

如果版本较旧,建议升级到最新版本:

代码语言:txt
复制
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install protobuf-compiler

# macOS
brew install protobuf

2. 检查 protobuf 文件配置

确保你的 protobuf 文件中的 packageimport 语句配置正确。例如:

代码语言:txt
复制
// file1.proto
package mypackage.subdir1;

import "file2.proto";

message Message1 {
  Message2 msg = 1;
}
代码语言:txt
复制
// file2.proto
package mypackage.subdir2;

message Message2 {
  string text = 1;
}

确保 import 路径正确,并且 package 声明一致。

3. 检查编译选项

确保在编译 protobuf 文件时使用了正确的选项。例如,使用 protoc 编译 protobuf 文件时,可以使用以下命令:

代码语言:txt
复制
protoc --proto_path=./ --cpp_out=./ file1.proto file2.proto

其中 --proto_path 指定了 protobuf 文件的路径,--cpp_out 指定了生成的 C++ 文件的输出路径。

示例代码

假设你有以下目录结构:

代码语言:txt
复制
project/
├── subdir1/
│   └── file1.proto
└── subdir2/
    └── file2.proto

file1.proto 内容如下:

代码语言:txt
复制
// file1.proto
package mypackage.subdir1;

import "subdir2/file2.proto";

message Message1 {
  Message2 msg = 1;
}

file2.proto 内容如下:

代码语言:txt
复制
// file2.proto
package mypackage.subdir2;

message Message2 {
  string text = 1;
}

编译命令如下:

代码语言:txt
复制
protoc --proto_path=./ --cpp_out=./ subdir1/file1.proto subdir2/file2.proto

参考链接

通过以上步骤,你应该能够解决 PROTOBUF_INTERNAL_EXPORT 不包含导入的子目录的问题。如果问题仍然存在,请检查编译器和 protobuf 文件的具体配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Vivado那些事】创建包含源文件IP

有时候我们想参考官方源码,但是有些IP怎么也找不到官方源码,具体原因是什么呢? 下面从下面两种Vivado创建IP流程看下具体原因: ?...IP封装器为Vivado任何用户提供了一种能力,即将设计流程任意阶段一个设计进行封装,然后将该IP作为一个系统级IP进行使用。...创建包含源文件IP 上面建立IP可以很方便操作一下看到源文件,实际使用过程中IP作为知识产权成果,设计者并不希望公开IP核源代码,下面将带你建立一个包含源文件IP。...看到此时界面为空,并没有像前面封装包含源文件IP时候出现“DELAY”参数,这是因为“DELAY”参数对于Verilog HDL而言是行为级描述,在综合时候起任何作用。...调用并验证包含源文件IP 设计 调用和使用完全和之前章节一样,这里就不再赘述。

2.8K11
  • 求字符串内包含重复字符最长子串

    今天我遇到一个问题,题目描述如下:         一个字符串,求这个字符串中包含重复字符最长子串长度,如abba返回2,aaaaabc返回3,bbbbbbb返回1,等等上面是测试用例。...那么我解决这个问题思路有两种: 第一种是,设一个头指针和一个尾指针,头指针指向,包含重复字符子串第一个字符,尾指针指向包含重复子串最后一个字符,用一个hashset保存已经出现过字符,例如abba...,如果尾指针指向字符,在集合中没有出现,那么将这个字符放入结合,然后尾指针向后移动,这是尾指针会移动到第二个b位置,如果集合中已经包含了这个字符,那么用尾指针索引减去头指针索引,会求出一个子串长度...但是这种思路时间复杂度高,为o(n*n)时间复杂度,所以这种算法效率不太高,下面是我代码: package com.test; import java.util.HashSet; import...hashmap作为辅助,mapkey存储是字符,value存储是该字符当前位置,首先设置一个头指针,指向字符串开头,那么从开始遍历字符串,如果map当中包含这个字符,那么用这个字符当前所在位置减去头指针位置

    1.1K20

    java 算法中常见问题总结1(代码实现,包含逻辑)

    参考地址:   http://blog.csdn.net/swandragon/article/details/4926457 API上面的 Integer类中方法 java中删除数组中某个元素...:  1.java中Calendar类用法 例:计算当前时间是星期几 import java.util.Calendar; import java.util.Scanner; public class...,需注意,外国第一天是周日,周二是第二天 外国月份是从0开始,如:一月需要设置月份为0 2.时间戳转换 /**  * 日期格式时间戳 转换成字符串 * @param date 时间戳 * @param...另外 如果数组中含有多个指定值元素,则无法保证找到是哪一个。...插入点是索引键将要插入数组那一点,即第一个大于该键元素索引。 卢卡斯定理 lucas(数论定理): C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p    (p为质数)

    87030

    vue+element-ui简洁导入导出功能【包含上传到云】

    前言 后台管理系统中数据展示一般都是用表格,表格会涉及到导入和导出; 1.导入 1.1 el-upload组件 1.导入是利用element-uiUpload 上传组件; <el-upload class...可以设置http-request属性,覆盖默认上传行为,可以自定义上传实现 1.4 云端COS上传 这个一般还是很常见, 原理是将文件存储到云端,返回一个存贮地址存在本地服务器, cos存储过程:...鉴权===分片上传===成功返回存储地址 tencentcos存贮 2 导出 2.1 原理 导出是利用file一个对象blob; 通过调用后台接口拿到数据, 然后用数据来实例化blob, 利用a标签...-- 导入 --> <el-dialog title="<em>导入</em>" :visible.sync="dialogImportVisible" :modal-append-to-body="false" :...response.headers.datestr + '.xls' link.click() }) } 结语 感谢看到这里,很实用导入导出功能代码

    2.5K21

    Android Studio中导入JNI生成.so库实现方法

    Android Studio中导入JNI生成.so库实现方法 由于在原来ADTEclipse环境中,用ndk_build工具生成了相应各个.so库文件之后,eclipse工具就会自动把这些库导入到...然后跟原来一样,用ndk_build工具去编,然后工具会自动生成libs目录,里面还有每个你在Application.mk里所指定处理器架构so文件。...完成之后,编辑app目录下build.gradle文件,为其添加以下代码: sourceSets { main { jniLibs.srcDirs = ['libs'] } } 完整...libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:20.0.0' } 以上就是对Android Studio中导入...JNI生成.so库实现方法 讲解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站支持!

    90821

    浅谈pipreqs组件(自动生成需要导入模块信息)

    简介 pipreqs作用 一起开发项目的时候总是要搭建环境和部署环境,这个时候必须得有个python第三方包list,一般都叫做requirements.txt。...如果一个项目使用时virtualenv环境,还好办 pip freeze 就可以解决,但是如果一个项目的依赖list没有维护,而且又是环境混用,那就不好整理呀,不过,这里安利一个工具 pipreqs,...可以自动根据源码生成 requirements.txt . pip freeze命令 $ pip freeze > requirements.txt   这种方式配合virtualenv 才好使,否则把整个环境中包都列出来了...pipreqs安装 pip install pipreqs pipreqs使用 生成requirements.txt文件 使用方式也比较简单,直接进入项目下然后使用 pipreqs ./ 命令即可,...这是由于编码问题所导致,加上encoding参数即可,如下: pipreqs ./ --encoding=utf-8 安装requirements.txt文件中模块 直接用下面命令就可以将文件中所有的模块一次性安装了

    1.8K30

    一个简单方法:截取子类名称中包含基类后缀部分

    在代码中,我们可能会为了能够一眼看清类之间继承(从属)关系而在子类名称后缀中带上基类名称。但是由于这种情况下基类参与实际业务,所以对外(文件/网络)名称通常不需要带上这个后缀。...本文提供一个简单方法,让子类中基类后缀删掉,只取得前面的那部分。 在这段代码中,我们至少需要获得两个传入参数,一个是基类名称,一个是子类名称。...23 24 25 26 27 28 29 30 31 32 33 using System; namespace Walterlv.Utils { /// /// 包含类名相关处理方法...在截取完子串之后,我们还需要验证截取字符串是否已经是空串了,因为父子类名称可能是完全一样(虽然这样做法真的很逗比)。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

    22730

    linux 正则表达式匹配包含某些字符串技巧

    经常我们会遇到想找出包含某个字符串文本,程序员最容易想到是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误。...我们可以这样写:[^hede],但这样正则表达式完全是另外一个意思,它意思是字符串里不能包含‘h',‘e',‘d'三个但字符。那什么样正则表达式能过滤出包含完整“hello”字串信息呢?....)*$ 上面这个表达式就能过滤出包含‘hede'字串信息。我上面也说了,这种写法并不是正则表达式“擅长”用法,但它是可以这样用。 解释 一个字符串是由n个字符组成。...是否定式向前查找,它帮我们解决了字符串“包含”匹配问题。 以下是一些补充: 分享下php生成随机数三种方法,生成1-10之间不重复随机数,php生成不重复随机数例子,需要朋友参考下。...在hacker news上看到regex golf,几道很有趣正则表达式题,有的需要用到匹配这种匹配,比如需要匹配包含某个单词串。

    8.7K30

    我是不会运行你代码吗?,我是不会导入自己数据!

    常常遇到有人问起看到分享教程导入数据方式是data(dune)等直接调用系统数据,而自己怎么读入自己数据呢? 对于初学者来讲,这确实是个问题。...如何准备数据、拿到正确格式数据并导入后续代码进行分析,是学习和应用过程中第一个拦路虎。 为什么教程会习惯使用内置数据?...作者可能觉得这个太简单而忽略了初学者需求。(生信学习学是什么?常识!) 但内置数据频繁使用是导致初学者学习这个教程时经常提出上面这个问题原因。...提及可能出现问题解决;这也是操作了多套实际数据后,才能写出部分。 那假如教程没有提供这么详细,自己又得用这个教程,怎么做呢? 自己如何根据教程数据准备并读入自己数据 1....这套数据包含了30个物种在20个样品丰度信息。

    1.4K10

    hibernate和mybatis区别及特点_hibernate配置文件中,包含下面的

    你可以通过Spring Initializer来初始化项目,也可以通过IDEA自带Spring Initializer功能构建项目,项目构建完成之后,pom.xml文件中配置如下(包含但不限于文中给出依赖项...@Data注解可以自动生成类属性getter、setter和toString方法。...@NoArgsConstructor会自动为类生成无参构造函数,@AllArgsConstructor则会生成带全部属性构造函数。...可以借助JPA自动生成数据库表能力,从而简化使用Mybatis步骤。...两者之间优势互补,能进一步提升开发效率和系统性能。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。

    1.6K30
    领券