The default behavior of the OSS ASN.1 Compiler is to treat the final module within the final input file as the root module. It is the root module which is, so to speak, the top of the food chain. The root is the one which contains the types you directly work with; the other modules are there solely to resolve the references.
So although finding and moving the actual root module to the bottom would solve your problem, you probably don't already know which is the root. The easiest way around this is to ask the ASN.1 Compiler to treat all modules as roots; you do this by using the -root option. You'll probably get a lot more stuff generated into the .c, .cpp, .h, or .java files, but you'll be sure that it's all there.
If you prefer to work at isolating the root, you can try moving the modules around or else use the OSS.ROOT directive like this
where RootModuleName is replaced by the name of the actual root module.
The OSS.ROOT directive instructs the ASN.1 Compiler to forget about using the last module as the root and instead treat the modules specified by the directive as roots. There can be any number. You may place this directive within an ASN.1 file or, perhaps in a more tidy manner, insert it into a separate file, for instance, directives.asn, and include that file on the command line. So, instead of
asn1 a.asn b.asn c.asn
you would have
asn1 directives.asn a.asn b.asn c.asn
The samples included with some of the Knowledge Center answers are meant for your general understanding of the OSS products. Different versions of the products might produce slightly different outputs. Consult the products documentation and samples for the most up-to-date products information and code examples.
Test drive the OSS Nokalva ASN.1, LTE, and XML Tools now! Your trial includes complete software, documentation, sample programs, free 24x7 technical support and more.
Our expert personnel can help you learn ASN.1!
We offer 4-day ASN.1 courses at our headquarters or your premises.