c++ - Onnx 不工作。AttributeProto 不是名称错误
问题描述
我正在尝试在 c++ 代码中使用 onnx。但是当我尝试使用 onnx/proto_utils.h 时出现错误:'AttributeProto' 不是名称类型。我不确定是我的安装有问题还是什么。我使用 readme.md 安装说明从源代码安装了 onnx。如果有人知道出了什么问题,我会提供任何帮助。
Onnx安装步骤:
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
python3 setup.py install
sudo apt-get install protobuf-compiler libprotoc-dev
pip3 install onnx
测试.cpp
#include <iostream>
#include "onnx/onnx_pb.h"
#include "onnx/proto_utils.h"
int main()
{
std::cout << "Hello\n";
}
汇编
g++ -DONNX_ML=1 test.cpp -o test -lprotobuf -I/home/bearnard/onnx/.setuptools-cmake-build/
错误信息
In file included from test.cpp:3:
/usr/local/include/onnx/proto_utils.h:38:65: error: ‘AttributeProto’ does not name a type
38 | template<typename T> inline std::vector<T> RetrieveValues(const AttributeProto& attr);
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h:39:61: error: ‘AttributeProto’ does not name a type
39 | template<> inline std::vector<int64_t> RetrieveValues(const AttributeProto& attr) {
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h: In function ‘std::vector<T> ONNX_NAMESPACE::RetrieveValues(const int&) [with T = long int]’:
/usr/local/include/onnx/proto_utils.h:40:16: error: request for member ‘ints’ in ‘attr’, which is of non-class type ‘const int’
40 | return {attr.ints().begin(), attr.ints().end()};
| ^~~~
/usr/local/include/onnx/proto_utils.h:40:37: error: request for member ‘ints’ in ‘attr’, which is of non-class type ‘const int’
40 | return {attr.ints().begin(), attr.ints().end()};
| ^~~~
/usr/local/include/onnx/proto_utils.h:40:49: error: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<long int>’
40 | return {attr.ints().begin(), attr.ints().end()};
| ^
| |
| <brace-enclosed initializer list>
/usr/local/include/onnx/proto_utils.h: At global scope:
/usr/local/include/onnx/proto_utils.h:43:65: error: ‘AttributeProto’ does not name a type
43 | template<> inline std::vector<std::string> RetrieveValues(const AttributeProto& attr) {
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h: In function ‘std::vector<T> ONNX_NAMESPACE::RetrieveValues(const int&) [with T = std::__cxx11::basic_string<char>]’:
/usr/local/include/onnx/proto_utils.h:44:17: error: request for member ‘strings’ in ‘attr’, which is of non-class type ‘const int’
44 | return { attr.strings().begin(), attr.strings().end() };
| ^~~~~~~
/usr/local/include/onnx/proto_utils.h:44:41: error: request for member ‘strings’ in ‘attr’, which is of non-class type ‘const int’
44 | return { attr.strings().begin(), attr.strings().end() };
| ^~~~~~~
/usr/local/include/onnx/proto_utils.h:44:57: error: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<std::__cxx11::basic_string<char> >’
44 | return { attr.strings().begin(), attr.strings().end() };
| ^
| |
| <brace-enclosed initializer list>
/usr/local/include/onnx/proto_utils.h: At global scope:
/usr/local/include/onnx/proto_utils.h:47:59: error: ‘AttributeProto’ does not name a type
47 | template<> inline std::vector<float> RetrieveValues(const AttributeProto& attr) {
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h: In function ‘std::vector<T> ONNX_NAMESPACE::RetrieveValues(const int&) [with T = float]’:
/usr/local/include/onnx/proto_utils.h:48:17: error: request for member ‘floats’ in ‘attr’, which is of non-class type ‘const int’
48 | return { attr.floats().begin(), attr.floats().end() };
| ^~~~~~
/usr/local/include/onnx/proto_utils.h:48:40: error: request for member ‘floats’ in ‘attr’, which is of non-class type ‘const int’
48 | return { attr.floats().begin(), attr.floats().end() };
| ^~~~~~
/usr/local/include/onnx/proto_utils.h:48:55: error: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<float>’
48 | return { attr.floats().begin(), attr.floats().end() };
| ^
| |
| <brace-enclosed initializer list>
解决方案
推荐阅读
- javascript - 获取缓存数据 Vue CLI Vuex PWA
- amazon-web-services - AWS S3 存储桶策略引发拒绝访问错误
- javascript - 如何从 forEach 方法中删除不需要的计数增量?
- php - PHP - spatie/image-optimizer 不起作用
- python - 如何编写函数来运行函数并返回唯一命名的外部范围变量?
- php - 如何在里面使用 font-awesome 图标
- sql-server - 如何通过 XML 文件导入/导出 SQL Server 表
- javafx - 如何根据tableview单元格修改选中的tableview
- java - 阵列的工作结构。java中的binarySearch()方法
- python - 如何从 DetailView 的正文中导入图像并将其用作 ListView/ 中的缩略图?