Menu

#24 undefined reference to asn_DEF_Rectangle

v1.0_(example)
open
nobody
None
5
2015-11-10
2015-11-10
Martin L.
No

hi guys,

First of all: my english is poor, but I hope you understand me.
I downloaded asn1c-0.9.27.tar.gz (https://lionet.info/asn1c/download.html) few days ago. I don’t have implemented a program with ASN.1 before, so I’m an absolute amateur. I develop under Linux (Debian) with Eclipse CDT (C++).

I did the following:

I extracted and installed asn1c with follows commands in the terminal (as root):

tar xfz asn1c-0.9.27.tar.gz
cd asn1c-0.9.27
./configure --prefix=/usr
make
make install

After this, I could use asn1c in the terminal. Now I tried the example in the documentation (asn1c-usage.pdf). I created a file named rectangle.asn1 with the following contents:

RectangleModule1 DEFINITIONS ::= BEGIN
   Rectangle ::= SEQUENCE {
   height INTEGER,
   width INTEGER
}
END

After this, I compiled it in the terminal with follow command:

asn1c rectangle.asn1

terminal output:

WARNING: Cannot find standard modules in /usr/local/share/asn1c/standard-modules
Compiled Rectangle.c
Compiled Rectangle.h
Copied /usr/local/share/asn1c/INTEGER.h -> INTEGER.h
Copied /usr/local/share/asn1c/NativeEnumerated.h    -> NativeEnumerated.h
Copied /usr/local/share/asn1c/INTEGER.c -> INTEGER.c
Copied /usr/local/share/asn1c/NativeEnumerated.c    -> NativeEnumerated.c
Copied /usr/local/share/asn1c/NativeInteger.h   -> NativeInteger.h
Copied /usr/local/share/asn1c/NativeInteger.c   -> NativeInteger.c
Copied /usr/local/share/asn1c/constr_SEQUENCE.h -> constr_SEQUENCE.h
Copied /usr/local/share/asn1c/constr_SEQUENCE.c -> constr_SEQUENCE.c
Copied /usr/local/share/asn1c/asn_application.h -> asn_application.h
Copied /usr/local/share/asn1c/asn_system.h  -> asn_system.h
Copied /usr/local/share/asn1c/asn_codecs.h  -> asn_codecs.h
Copied /usr/local/share/asn1c/asn_internal.h    -> asn_internal.h
Copied /usr/local/share/asn1c/OCTET_STRING.h    -> OCTET_STRING.h
Copied /usr/local/share/asn1c/OCTET_STRING.c    -> OCTET_STRING.c
Copied /usr/local/share/asn1c/BIT_STRING.h  -> BIT_STRING.h
Copied /usr/local/share/asn1c/BIT_STRING.c  -> BIT_STRING.c
Copied /usr/local/share/asn1c/asn_codecs_prim.c -> asn_codecs_prim.c
Copied /usr/local/share/asn1c/asn_codecs_prim.h -> asn_codecs_prim.h
Copied /usr/local/share/asn1c/ber_tlv_length.h  -> ber_tlv_length.h
Copied /usr/local/share/asn1c/ber_tlv_length.c  -> ber_tlv_length.c
Copied /usr/local/share/asn1c/ber_tlv_tag.h -> ber_tlv_tag.h
Copied /usr/local/share/asn1c/ber_tlv_tag.c -> ber_tlv_tag.c
Copied /usr/local/share/asn1c/ber_decoder.h -> ber_decoder.h
Copied /usr/local/share/asn1c/ber_decoder.c -> ber_decoder.c
Copied /usr/local/share/asn1c/der_encoder.h -> der_encoder.h
Copied /usr/local/share/asn1c/der_encoder.c -> der_encoder.c
Copied /usr/local/share/asn1c/constr_TYPE.h -> constr_TYPE.h
Copied /usr/local/share/asn1c/constr_TYPE.c -> constr_TYPE.c
Copied /usr/local/share/asn1c/constraints.h -> constraints.h
Copied /usr/local/share/asn1c/constraints.c -> constraints.c
Copied /usr/local/share/asn1c/xer_support.h -> xer_support.h
Copied /usr/local/share/asn1c/xer_support.c -> xer_support.c
Copied /usr/local/share/asn1c/xer_decoder.h -> xer_decoder.h
Copied /usr/local/share/asn1c/xer_decoder.c -> xer_decoder.c
Copied /usr/local/share/asn1c/xer_encoder.h -> xer_encoder.h
Copied /usr/local/share/asn1c/xer_encoder.c -> xer_encoder.c
Copied /usr/local/share/asn1c/per_support.h -> per_support.h
Copied /usr/local/share/asn1c/per_support.c -> per_support.c
Copied /usr/local/share/asn1c/per_decoder.h -> per_decoder.h
Copied /usr/local/share/asn1c/per_decoder.c -> per_decoder.c
Copied /usr/local/share/asn1c/per_encoder.h -> per_encoder.h
Copied /usr/local/share/asn1c/per_encoder.c -> per_encoder.c
Copied /usr/local/share/asn1c/per_opentype.h    -> per_opentype.h
Copied /usr/local/share/asn1c/per_opentype.c    -> per_opentype.c
Copied /usr/local/share/asn1c/converter-sample.c    -> converter-sample.c
Generated Makefile.am.sample
root@debian:~/Dokumente# 

I got a warning, so I think I made something wrong during the installation. I copied the folder “standard-modules” from asn1c-0.9.27.tar.gz (/skeletons) to /usr/local/share/asn1c and tried again. Ok, now it works without a warning. Now I created a new c++ project in eclipse and add the path to the compiled asn1 files. Then I wrote the main.cpp file with the following code:

#include <Rectangle.h>

int main() 
{
    Rectangle_t *rect = NULL;
    asn_DEF_Rectangle.free_struct(&asn_DEF_Rectangle, rect, 0);

    /* more code   …sometime */

    return 0;
}

However, I can’t compile this code. I always get an error like this: undefined reference to 'asn_DEF_Rectangle'
Eclipse output:

make all 
Building file: ../src/ASN1.cpp
Invoking: GCC C++ Compiler
g++ -I/root/Dokumente -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/ASN1.d" -MT"src/ASN1.d" -o "src/ASN1.o" "../src/ASN1.cpp"
Finished building: ../src/ASN1.cpp

Building target: ASN1
Invoking: GCC C++ Linker
g++  -o "ASN1"  ./src/ASN1.o   
makefile:45: recipe for target 'ASN1' failed
./src/ASN1.o: In function `main':
/media/sf_NTS_Daten/Workspace/ASN1/Debug/../src/ASN1.cpp:6: undefined reference to `asn_DEF_Rectangle'
/media/sf_NTS_Daten/Workspace/ASN1/Debug/../src/ASN1.cpp:6: undefined reference to `asn_DEF_Rectangle'
collect2: error: ld returned 1 exit status
make: *** [ASN1] Error 1

All examples I found (documentation and lionet.info) ends with an error (undefined reference to 'asn_DEF_xxxxxxxxxxxxxx'). I don’t know the reason. The structures are working and I can fill it with values, but asn_DEF_Rectangle (in this case) generate an error. I have no idea what I can do. Did I need a library? Or may fail the installation of asn1c?

Have someone tips or ideas? please...
I do not know how to continue…. :(

regards,
SBond

Discussion


Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.