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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Адрес функции в динамической библиотеки  (Прочитано 1852 раз)
Martiro
Гость
« : Август 22, 2014, 13:05 »

Всех приветствую! Вопрос такой.
Создал проект динамической библиотеки, код ниже. А вот чтобы вызвать функцию из неё прходится вызывать "кривоватый" адрес функции.
Как грамотно решить эту проблемку?

Файл проекта:
Код:
QT -= gui

TARGET = GetShoreLines

TEMPLATE = lib

OBJECTS_DIR = obj
DEFINES += GETSHORELINES_LIBRARY
SOURCES += getshorelines.cpp
HEADERS += getshorelines.h

getshorelines.h:
Код:
#ifndef GETSHORELINES_H
#define GETSHORELINES_H
#include <QString>
#include <QObject>
#include <Qt>
#include <QtDebug>

void ExecLibrary(QString* sFile, int &iNpts, ShorelinePoint* &pPts);

#endif // GETSHORELINES_H

getshorelines.cpp:
Код:
#include "getshorelines.h"

void ExecLibrary(QString* sFile, int &iNpts, ShorelinePoint* &pPts)
{
    ...
}

Вызывать приходится функцию _Z11ExecLibraryP7QStringRiRP14ShorelinePoint, так:
Код:
...
Fct myFunction = (Fct)(myLib.resolve("_Z11ExecLibraryP7QStringRiRP14ShorelinePoint"));
...
А хотелось бы просто ExecLibrary. Строит глазки
Записан
VPS
Гость
« Ответ #1 : Август 22, 2014, 13:36 »

Попробуйте дописать extern "C" перед объявлением метода в заголовочном файле библиотеки.
« Последнее редактирование: Август 22, 2014, 13:40 от vps » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Август 24, 2014, 09:07 »

библиотека создается в Qt? Если да, то должен создаться макрос YOURLIB_SHAREDEXPORT, который позсдавляете в сигнатуры функций, тогда компилятор сделает все как надо. И вообще читайте документацию по Qt, там все написано как юзать свои/чужие либы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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