crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Использование статических библиотек, проблемы при компиляции проекта
Mouse12x3oz
  опции профиля:
сообщение 5.11.2011, 19:02
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 5.11.2011
Пользователь №: 2981

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте! Впервые столкнулась с использованием статических библиотек. Итак, что получилось.
Я собрала проект-библиотеку, получила файл librlua.a
Затем создала новый проект, папка выглядит так(картинка)
http://forum.sysman.ru/index.php?act=Attac...p;id=1320494091

В файле pro написали

QT       += core

QT       -= gui

LIBS +=  C:/Qt/2010.05/Prilozenie/lib/librlua.a
TARGET = Prilozenie
CONFIG   += console
CONFIG   -= app_bundle

INCLUDEPATH+= ./include
TEMPLATE = app

SOURCES += main.cpp \
    Core.cpp

HEADERS += \
    Core.h

Всё собирается,пока main почти пустая
#include <stdlib.h>
using namespace std;


int main()
{

   /* Core core;
    lua_State*L;
    L=lua_open();
    luaL_openlibs(L);
    core.Register(L);
    int status=luaL_loadfile(L, "script.lua");
    if (status)
    {
        fprintf(stderr, "File not found");
        exit(1);
    }
    int num;
    cin>>num;
    int result=lua_pcall(L, 0, LUA_MULTRET, 0);
    if(result)
    {
        fprintf(stdout, "runtime error\n");
        exit(1);
    }
    lua_close(L);*/

   getch();
   return 0;

}

Как только убираешь комментарии,начинается использование того,что определено в библиотеке по идее(работа с луа функциями) и начинаются ошибки
Ошибка: :: error: collect2: ld returned 1 exit status
А сообщения сборки при этом
Выполняется сборка проекта Prilozenie...
Настройки не изменились, этап qmake пропускается.
Запускается "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `C:/Qt/2010.05/Prilozenie-build-desktop'
c:\qt\2010.05\qt\bin\qmake.exe -spec ..\qt\mkspecs\win32-g++ -o Makefile ..\Prilozenie\Prilozenie.pro
mingw32-make: Leaving directory `C:/Qt/2010.05/Prilozenie-build-desktop'
mingw32-make: Entering directory `C:/Qt/2010.05/Prilozenie-build-desktop'
C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Qt/2010.05/Prilozenie-build-desktop'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug\Prilozenie.exe debug/main.o debug/Core.o -L"c:\Qt\2010.05\qt\lib" C:/Qt/2010.05/Prilozenie/lib/librlua.a -lQtCored4
mingw32-make[1]: Leaving directory `C:/Qt/2010.05/Prilozenie-build-desktop'
mingw32-make: Leaving directory `C:/Qt/2010.05/Prilozenie-build-desktop'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(loadlib.o):loadlib.c:(.text+0x9bd): undefined reference to `dlsym'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(loadlib.o):loadlib.c:(.text+0xa04): undefined reference to `dlopen'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(loadlib.o):loadlib.c:(.text+0xa11): undefined reference to `dlerror'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(loadlib.o):loadlib.c:(.text+0xa29): undefined reference to `dlerror'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(loadlib.o):loadlib.c:(.text+0xffa): undefined reference to `dlclose'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(loslib.o):loslib.c:(.text+0x46): undefined reference to `mkstemp'
C:/Qt/2010.05/Prilozenie/lib/librlua.a(ldo.o):ldo.c:(.text+0x8d3): undefined reference to `_longjmp'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\Prilozenie.exe] Error 1
mingw32-make: *** [debug] Error 2
Процесс "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта Prilozenie (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"


Решать добавлением файлов?То есть как только начинаем использовать функции,описанные по идее в собранной библиотеке, работать отказывается. Что не так?
Советовали применять subdir и libdir, но не найду,как с ними работать, помогите,пожалуйста! Спасибо :unsure:
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Mouse12x3oz
  опции профиля:
сообщение 6.11.2011, 21:08
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 5.11.2011
Пользователь №: 2981

Спасибо сказали: 0 раз(а)




Репутация:   0  


На windows ситуация такая (картинка): ругается на путь C:\Documents and Settings\Elena\Application\lib\librlua.a
Дело в расширении библиотеки? надо как-то переделать ее саму или в чем?

На linux она прилепилась,но там ошибки:
нет декларации для cin,exit, но он не знает почему-то старндартные библиотеки, в которых они хранятся. Подключаю как обычно,ошибки остаются,а библиотеки подчеркиваются.

Перенесла этот успешно собранный проект с линукса на виндоус - ошибка
:-1: ошибка: No rule to make target `c:/Qt/prilogenie/../Prilozenie/lib/debug/rlua.lib', needed by `debug\prilogenie.exe'. Stop.

Консоль сборки :
Выполняется сборка проекта prilogenie...
Настройки не изменились, этап qmake пропускается.
Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe»
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Qt/prilogenie-build-desktop'
mingw32-make[1]: Leaving directory `C:/Qt/prilogenie-build-desktop'
mingw32-make[1]: *** No rule to make target `c:/Qt/prilogenie/../Prilozenie/lib/debug/rlua.lib', needed by `debug\prilogenie.exe'.  Stop.
mingw32-make: *** [debug] Error 2
Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта prilogenie (цель: Настольный компьютер)
Во время выполнения сборки на этапе «Сборка»


Помогите,пожалуйста.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 16:27