Russian Qt Forum
Ноябрь 25, 2024, 12:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Библиотека NMEA Library динамическая библиотека на Qt  (Прочитано 5239 раз)
Kirill_m
Гость
« : Сентябрь 17, 2012, 16:31 »

Доброе время суток.
Есть библиотека NMEA Library
Исходники уже оформлены под динамическую библиотеку.

Но надо обернуть её в qt, сделал динамическую библиотеку, сделал pro фаил правильно.

подключается, но при попытке вызовов методов
unresolved external symbol _nmea_parse referenced in function _main

Pro фаил

Код:
QT       -= gui

TARGET = QNmeaLib
TEMPLATE = lib
VERSION = 1.0.0

DEFINES += QNMEALIB_LIBRARY

SOURCES += \
    src/tok.c \
    src/time.c \
    src/sentence.c \
    src/parser.c \
    src/parse.c \
    src/info.c \
    src/gmath.c \
    src/generator.c \
    src/generate.c \
    src/context.c

HEADERS +=\
        QNmeaLib_global.h \
    include/nmea/units.h \
    include/nmea/tok.h \
    include/nmea/time.h \
    include/nmea/sentence.h \
    include/nmea/parser.h \
    include/nmea/parse.h \
    include/nmea/nmea.h \
    include/nmea/info.h \
    include/nmea/gmath.h \
    include/nmea/generator.h \
    include/nmea/generate.h \
    include/nmea/context.h \
    include/nmea/config.h

symbian {
    MMP_RULES += EXPORTUNFROZEN
    TARGET.UID3 = 0xED4313FA
    TARGET.CAPABILITY =
    TARGET.EPOCALLOWDLLDATA = 1
    addFiles.sources = QNmeaLib.dll
    addFiles.path = !:/sys/bin
    DEPLOYMENT += addFiles
}

unix:!symbian {
    maemo5 {
        target.path = /opt/usr/lib
    } else {
        target.path = /usr/lib
    }
    INSTALLS += target
}

Пример кода одно из хедоров библиотеки
Код:
/*
 *
 * NMEA library
 * URL: http://nmea.sourceforge.net
 * Author: Tim (xtimor@gmail.com)
 * Licence: http://www.gnu.org/licenses/lgpl.html
 * $Id: generator.h 4 2007-08-27 13:11:03Z xtimor $
 *
 */

#ifndef __NMEA_GENERATOR_H__
#define __NMEA_GENERATOR_H__

#include "info.h"


#ifdef  __cplusplus
extern "C" {
#endif

/*
 * high level
 */

struct _nmeaGENERATOR;

enum nmeaGENTYPE
{
    NMEA_GEN_NOISE = 0,
    NMEA_GEN_STATIC,
    NMEA_GEN_ROTATE,

    NMEA_GEN_SAT_STATIC,
    NMEA_GEN_SAT_ROTATE,
    NMEA_GEN_POS_RANDMOVE,

    NMEA_GEN_LAST
};

struct _nmeaGENERATOR * nmea_create_generator(int type, nmeaINFO *info);
void    nmea_destroy_generator(struct _nmeaGENERATOR *gen);

int     nmea_generate_from(
        char *buff, int buff_sz,    /* buffer */
        nmeaINFO *info,             /* source info */
        struct _nmeaGENERATOR *gen, /* generator */
        int generate_mask           /* mask of sentence`s (e.g. GPGGA | GPGSA) */
        );

/*
 * low level
 */

typedef int (*nmeaNMEA_GEN_INIT)(struct _nmeaGENERATOR *gen, nmeaINFO *info);
typedef int (*nmeaNMEA_GEN_LOOP)(struct _nmeaGENERATOR *gen, nmeaINFO *info);
typedef int (*nmeaNMEA_GEN_RESET)(struct _nmeaGENERATOR *gen, nmeaINFO *info);
typedef int (*nmeaNMEA_GEN_DESTROY)(struct _nmeaGENERATOR *gen);

typedef struct _nmeaGENERATOR
{
    void                *gen_data;
    nmeaNMEA_GEN_INIT    init_call;
    nmeaNMEA_GEN_LOOP    loop_call;
    nmeaNMEA_GEN_RESET   reset_call;
    nmeaNMEA_GEN_DESTROY destroy_call;
    struct _nmeaGENERATOR *next;

} nmeaGENERATOR;

int     nmea_gen_init(nmeaGENERATOR *gen, nmeaINFO *info);
int     nmea_gen_loop(nmeaGENERATOR *gen, nmeaINFO *info);
int     nmea_gen_reset(nmeaGENERATOR *gen, nmeaINFO *info);
void    nmea_gen_destroy(nmeaGENERATOR *gen);
void    nmea_gen_add(nmeaGENERATOR *to, nmeaGENERATOR *gen);

#ifdef  __cplusplus
}
#endif

#endif /* __NMEA_GENERATOR_H__ */


Ну и пример Pro файла тестовой программы
Код:
QT       += core

QT       -= gui

TARGET = TestLib
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp



win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQNmeaLib1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQNmeaLib1d
else:symbian: LIBS += -lQNmeaLib1
else:unix: LIBS += -L$$PWD/lib/ -lQNmeaLib1

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

И Cpp

Код:
#include <QtCore/QCoreApplication>
#include <nmea.h>
#include <string.h>



int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    const char *buff[] = {
        "$GPRMC,173843,A,3349.896,N,11808.521,W,000.0,360.0,230108,013.4,E*69\r\n",
        "$GPGGA,111609.14,5001.27,N,3613.06,E,3,08,0.0,10.2,M,0.0,M,0.0,0000*70\r\n",
        "$GPGSV,2,1,08,01,05,005,80,02,05,050,80,03,05,095,80,04,05,140,80*7f\r\n",
        "$GPGSV,2,2,08,05,05,185,80,06,05,230,80,07,05,275,80,08,05,320,80*71\r\n",
        "$GPGSA,A,3,01,02,03,04,05,06,07,08,00,00,00,00,0.0,0.0,0.0*3a\r\n",
        "$GPRMC,111609.14,A,5001.27,N,3613.06,E,11.2,0.0,261206,0.0,E*50\r\n",
        "$GPVTG,217.5,T,208.8,M,000.00,N,000.01,K*4C\r\n"
    };

    int it;
    nmeaINFO info;
    nmeaPARSER parser;

    nmea_zero_INFO(&info);
    nmea_parser_init(&parser);

    for(it = 0; it < 6; ++it)
        nmea_parse(&parser, buff[it], (int)strlen(buff[it]), &info);

    nmea_parser_destroy(&parser);


    return a.exec();
}

Помогите решить проблему.. замучился уже
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #1 : Сентябрь 17, 2012, 19:28 »

Выглядит похоже на то, что библиотека не подключается.
попробуй подключить ее без всяких условий.
Записан
Kirill_m
Гость
« Ответ #2 : Сентябрь 18, 2012, 12:58 »

Подключил просто без условий.

Код:
QT       += core

QT       -= gui

TARGET = TestLib
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp


LIBS += -L$$PWD/lib/ -lQNmeaLib

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include


Вот не понимаю почему так.
Если библиотеку собрать или с помощью VS или gcc в линухах и подключить, то да думаю будет нормально работать.
А вот оборачивать в Qt не хочет, хотя все правильно по идеи
Записан
Maxz
Гость
« Ответ #3 : Сентябрь 19, 2012, 08:46 »

Могу ошибиться, но:

.PRO библиотеки
Код:
TEMPLATE = lib

.PRO проекта
Код:
LIBS += -L$$PWD/lib/NmeaLib.a -lm
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.