我已经安装了osmocom asn1c compiler,aper-prefix
分支,以获得TCAP协议的实现。
我使用respective script编译了“.asn”文件。
已成功生成C文件,但在编译获取的C代码时,会引发与此代码行相关的错误:
#include <EXTERNAL.h>
事实上,缺少文件EXTERNAL.h(似乎此编译器不支持外部类型)。
有人知道这个问题和可能的解决办法吗?
最佳答案
你有几个选择:
使用newer version of asn1c from this PR(仍未合并)
从osmocom存储库复制EXTERNAL.h
在所有asn文件中将EXTERNAL
重命名为EXTERNALt
,并在具有EXTERNALt的asn文件中添加以下内容。
--
-- From "ITU-T Recommendation X.208", "34 The external type"
--
EXTERNALt ::= [UNIVERSAL 8] IMPLICIT SEQUENCE
{direct-reference OBJECT IDENTIFIER OPTIONAL,
indirect-reference INTEGER OPTIONAL,
data-value-descriptor ObjectDescriptor OPTIONAL,
encoding CHOICE
{single-ASN1-type [0] ANY,
octet-aligned [1] IMPLICIT OCTET STRING,
arbitrary [2] IMPLICIT BIT STRING}}
或者将其添加到单独的asn文件中,并在需要时导入。
关于c - 编译osmocom asn1c生成的C代码时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53632962/