Создаю проект, целью которого ставлю компиляцию 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();
..................................
}
...............