Eclipse CDT и asn1c (неопределенная ссылка на …)

Прежде всего: мой английский плохой, но я надеюсь, что вы меня понимаете.
Я разрабатываю под Linux (Debian) с Eclipse CDT (C ++), и мне нужен ASN.1 для моего приложения. Я установил asn1c (из http://lionet.info/) и попытался пример в документации, но он всегда терпит неудачу.

Я сделал следующее:

Я извлек и установил asn1c с помощью следующих команд в терминале (как root):

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

После этого я мог использовать asn1c в терминале. Теперь я попробовал пример в документации (asn1c-creation.pdf). Я создал файл с именем rectangle.asn1 со следующим содержимым:

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

После этого я скомпилировал его в терминале с помощью команды follow:

asn1c rectangle.asn1

Хорошо, это работает без предупреждения, и я получаю много файлов .c и .h. Теперь я создал новый проект c ++ в eclipse и добавил путь к скомпилированным файлам asn1. Затем я написал файл main.cpp со следующим кодом:

#include <Rectangle.h>

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

/* more code   …some time */

return 0;
}

Однако я не могу скомпилировать этот код. Я всегда получаю сообщение об ошибке: неопределенная ссылка на «asn_DEF_Rectangle»

Выход Eclipse:

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

Все примеры, которые я нашел (документация и lionet.info), заканчиваются ошибкой (неопределенная ссылка на «asn_DEF_xxxxxxxxxxxxxx»). Я не знаю причину. Структуры работают, и я могу заполнить их значениями, но asn_DEF_Rectangle (в данном случае) генерирует ошибку. Я понятия не имею, что я могу сделать. Мне нужна библиотека? … думаю линкеру нужно что-то …

У кого-нибудь есть советы или идеи? пожалуйста…
Я не знаю, как продолжить …. 🙁

…кстати: я использую компилятор gcc (стандарт eclipse cdt)

С уважением,
SBond

=============================================

Хорошо….
чтобы избежать каких-либо проблем с Eclipse, я пробую другой способ:

-> Я открываю этот сайт: http://lionet.info/asn1c/asn1c.cgi (онлайн генератор asn1)

-> Затем я добавляю его в мой пример модуля ASN.1:

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

-> Я нажимаю кнопку «Приступить к компиляции ASN.1» и загружаю сжатый файл «Получать скомпилированные исходники C (71 Kb .tgz)»

-> Я распаковываю все файлы в отдельную папку: / root / ASN1_test

-> Я создаю main.cpp (в / root / ASN1_test) со следующим кодом:

#include <Rectangle.h>

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

/* more code   …some time */

return 0;
}

-> Теперь я хочу скомпилировать это с g ++ и попробовать это:

g++ -I/root/ASN1_test -o MyProgram main.cpp

но…

/tmp/ccwF42ix.o: In function `main':
main.cpp:(.text+0x19): undefined reference to `asn_DEF_Rectangle'
main.cpp:(.text+0x26): undefined reference to `asn_DEF_Rectangle'
collect2: error: ld returned 1 exit status
root@debian:~/ASN1_test#

Что я не прав? Как я могу скомпилировать этот код? 🙁

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …