SWIG失去结构范围
SWIG Losing Scope of Structures
我正试图在用C++编写的协议解析器和用Python编写的TCP数据包过滤器之间创建一个接口。我不熟悉将C++与python结合使用,几天来我一直在尝试让两者合作。
我正在使用swig库。解析类(我没有写)通过头文件包含许多对其他c++文件的引用。C++类名为E2ProtocolHandler.cpp,它有一个包含所有依赖项的头文件,名为E2ProtocolHandler.h。
我写了以下Swig接口来遵守这一点:
%module e2ParserSwig
%{
#include "E2ProtocolHandler.h"
%}
bool parseE2(std::vector<uint8_t> ui8BufferIn, TTCAPMessage_t &tcapMsg);
运行这个不会给我带来任何问题:
swig -c++ -python -o e2Parser_wrap.cpp e2ParserSwig.i
编译是范围问题发生的地方:
g++ -c -fPIC e2Parser_wrap.cpp -I/usr/include/python2.6 -I/usr/lib/python2.6
错误:
e2Parser_wrap.cpp:6607: error: ‘TTCAPComponent_t’ was not declared in this scope
TTCAPCompnent_t
结构在E2ProtocolHandler.h
中定义有人知道我做错了什么吗?提前感谢您的帮助。
我完全是运气使然。我对C相当熟悉,但我从未使用过C++。这句话":"对我来说是一个陌生的概念,或者对我来说就是一个陌生概念。
为了解决这个问题,我需要包含函数所在的命名空间。我不认为有人会从我上面的问题中得出这一点,因为我发布源代码并不是为了完整性。
Swig接口应该是:
%module e2ParserSwig
%{
#include "E2ProtocolHandler.h"
%}
bool E2ProtocolHandler::parseE2(std::vector<uint8_t> ui8BufferIn, TTCAPMessage_t &tcapMsg);
相关文章:
- 在基于范围的for循环中使用结构化绑定声明
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 有没有办法将C++结构/类中的所有定义都纳入范围而不从中派生?
- 为什么基于范围的 for 循环中的结构化绑定只是一个副本而不是引用?
- 是否可以在C++ (C) 中使用全局范围对象(结构)?
- 创建结构体向量,表达式:向量下标超出范围
- 枚举范围无法通过 C++ 中的类中的结构访问
- 成员的结构与命名空间的潜在范围
- 为什么在.h中定义的私有结构需要.cpp文件中的返回类型中的范围
- C 结构没有声明此范围
- 如何创建一个结构的实例,当它不在范围内时,该实例将不会被删除
- 访问成员C 时,结构的向量生成了范围的错误
- C 中静态声明的结构的范围是什么?
- 带有类的嵌套结构.范围错误
- 结构从运动(openCV):“重建”未在此范围内声明
- 使结构内定义的枚举具有全局范围C++
- SWIG失去结构范围
- 区间范围树数据结构 C++
- C++数据结构的时间范围查询
- 范围搜索的数据结构(重新访问)