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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: компиляция библиотек msvc2008  (Прочитано 4624 раз)
hemmul
Гость
« : Июль 03, 2012, 13:32 »

Создаю проект, целью которого ставлю компиляцию dll, компилирую с помощью MinGW, все нормально работает.
Собираю Qt4.8.2 с помощью MSVC2008, после чего компилирую им сначала тестовую утилитку для  моей dll, проект не компилируется, дает ошибку:
" блабла\video_observation.dll:-1: ошибка: LNK1107: недопустимый или поврежденный файл: не удается прочитать по 0x2D0"
Теперь собираю тестовую утилитку с помощью MinGV, а библиотеку с помощью MSVC, все собирается, но тестовой утилитке не удается загрузить библиотеку.
Пересобираю тестовую утилитку с помощью MSVC - ошибка компиляции проекта та же.

ВОПРОС ! что такого сделать что бы библиотека собранная из под MSVC работала ?

video_observation.pro
Код:
QT       += core network
QT       -= gui

TARGET = video_observation
TEMPLATE = lib
DEFINES += VideoObservation_LIBRARY
SOURCES +=  extern_func.cpp
HEADERS  += extern_func.h

extern_func.h
Код:
#if defined(VideoObservation_LIBRARY)
#  define VideoObservation  Q_DECL_EXPORT
#else
#  define VideoObservation Q_DECL_IMPORT
#endif

extern "C"  {

VideoObservation int   number_sort_video_observ(void);
VideoObservationT const char * get_name_sort_number(int num);
...................
}

extern_func.cpp
Код:
extern "C"  VideoObservation int   number_sort_video_observ(void)
{
 ...................
}
extern "C"  VideoObservationT const char * get_name_sort_number(int num);
{
 ...................
}


создаю проект для тестирования библиотеки
test.pro
Код:
QT       += core gui network

TARGET = test_video_observation
TEMPLATE = app
SOURCES += main.cpp    

HEADERS  += mainwindow.h video_observation_library.h

video_observation_library.h
Код:
 typedef int (*Tnumber_sort_video_observ)(void);
 typedef char* (*Tget_name_sort_number)(int num);
main.cpp
Код:
   ...............
   QLibrary lib("video_observation");
    if(lib.load())
    {
        Tnumber_sort_video_observ number_sort_video_observ
               = (Tnumber_sort_video_observ)lib.resolve("number_sort_video_observ");
        qDebug() << number_sort_video_observ();
        ..................................
   }
  ...............
« Последнее редактирование: Июль 03, 2012, 13:47 от hemmul » Записан
Bepec
Гость
« Ответ #1 : Июль 03, 2012, 13:33 »

Эммм.. молодец что создаёшь проект.
Записан
hemmul
Гость
« Ответ #2 : Июль 03, 2012, 13:48 »

шустро отвечаете, еще тему дописать не успел ))
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #3 : Июль 04, 2012, 11:50 »

После смены компилятора очистить проект. Похоже MSVC питается слинковаться с объектником от MinGW.
Записан
hemmul
Гость
« Ответ #4 : Июль 04, 2012, 13:12 »

Чистил, удалял всю папку со сборкой, все бесполезно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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