MYTypes DEFINITIONS AUTOMATIC TAGS ::= BEGIN
EXPORTS ALL;
Uint8 ::= INTEGER (0..255)
C-2ENT ::= CLASS {
&id Uint8,
&Val
} WITH SYNTAX {&Val BY &id}
OBS ::= C-2ENT
SetObs OBS ::= {
{ObsPdu BY c-ObsPdu },
...
}
V2xPduStream ::= SEQUENCE {
type OBS.&id({SetObs}),
pdus SEQUENCE (SIZE(1..255)) OF OBS.&Val ({SetObs}{@.type}),
...
}
ObsPdu ::= OCTET STRING
c-ObsPdu Uint8 ::= 1
END
用asn1c编译生成的这个文件中【OBS.h】缺少这个头文件【C-2ENT.h】,为什么会这样,这个情况该怎么办
麻烦回答的人 看下我贴的asn1结构,实际结构也就10行,如果看不懂,那就别回答了
可能是ASN.1文件中缺少对C-2ENT.asn文件的引用导致的。请确保ASN.1文件中包含了对C-2ENT.asn文件的引用,例如:
IMPORTS C-2ENT FROM MyModule-1;
asn1c编译器配置问题:检查编译器的命令行参数或配置文件是否正确。 头文件路径问题:"C-2ENT.h"头文件的路径是否正确指定。如果该头文件位于其他目录中,确保在"OBS.h"文件中使用正确的路径包含语句。
这个情况可能是因为asn1c编译器没有正确地识别C-2ENT类型,导致没有生成对应的头文件。你可以尝试手动创建一个名为C-2ENT.h的头文件,并在其中定义C-2ENT类型。另外,你还可以检查一下你的ASN.1定义文件是否正确,是否包含了C-2ENT类型的定义。如果ASN.1定义文件没有问题,那么你可以尝试使用其他的ASN.1编译器来编译生成代码。
猜测可能是在使用asn1c编译生成C代码时,缺少某些必要的头文件
主要检查下面方向:
1、检查asn1c的编译环境是否正确设置
2、检查asn1c的编译选项是否正确设置
3、检查所需的头文件是否已正确包含
4、尝试从官方网站下载最新版本的asn1c
缺少头文件可能是因为在编译生成ASN.1文件时,没有正确地包含所有依赖的ASN.1文件。这种情况下,需要检查ASN.1文件之间的依赖关系,确保所有依赖的ASN.1文件都被正确地包含进来。
具体来说,可以检查以下几个方面:
头文件找不到的话,我们就指定头文件搜索路径 -I