Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 13:20   #1
Diez_
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 27
По умолчанию Lazarus подключение .so, .dll файлов

Всем доброго времени суток.

Возникла проблема при работе в Lazarus(linux) с динамическими библиотеки

На просторах интернета вычитал что в Windows, dll файлы подключаются с помощью функции LoadLibrary, возник вопрос, есть ли в linux аналог этой функции, т.к. при компиляция приложении с подключением so фалов при использовании данной функции заканчивается с ошибкой "Identifier not found "LoadLibrary""

если кто сталкивался с данной проблемой, просьба поделиться опытом, или сылкой где можно вычитать как это делать.

п.с. lazarus версии 0.90.30, в лазаре не давно, в linux тоже недавно, поэтому виню кривые руки))

//-----------------------

Все спасибо, разобрался) все моя не внимательность, забыл подключить модуль "dynlibs"
Мозг! Вернись!

Последний раз редактировалось Diez_; 10.06.2011 в 13:41. Причина: Нашел ответ
Diez_ вне форума Ответить с цитированием
Старый 10.06.2011, 19:43   #2
Diez_
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 27
По умолчанию Еще проблема

подскажите как в лазаре(linux) прописать путь к .so файлу, чтобы он брал его не из тех папок которые прописаны, а из тех от куда надо мне.

за ранее спасибо.
Мозг! Вернись!
Diez_ вне форума Ответить с цитированием
Старый 02.07.2011, 00:32   #3
Diez_
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 27
По умолчанию

Мда театр одного актера

Уважаемые последний вопрос, помогите дураку, всю голову уже сломал

при выгрузки либы FreeLibrary() прога просто закрывается, а при подключеной либе ошибка при вызови файлового диалога "Проект ... вызвал класс исключения 'External: SIGFPE'."
Мозг! Вернись!
Diez_ вне форума Ответить с цитированием
Старый 02.07.2011, 12:50   #4
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Diez_ Посмотреть сообщение
Мда театр одного актера

Уважаемые последний вопрос, помогите дураку, всю голову уже сломал

при выгрузки либы FreeLibrary() прога просто закрывается, а при подключеной либе ошибка при вызови файлового диалога "Проект ... вызвал класс исключения 'External: SIGFPE'."
Я, когда эксперементировал с Lazarus и библиотеками, работая с ними, в точном соответствии с документацией по Delphi, получал полностью рабочий код. При этом грузил двумя способами. Поэтому, если есть возможность - покажите код - проверю, при необходимости, в нескольких системах. Или тот кусок нерабочего кода.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 02.07.2011, 13:01   #5
Diez_
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 27
По умолчанию

Код:
var
  NameComponent : function(num : integer) : PChar;stdcall;

.....

LibLangFile := LoadLibrary(fileName);
    if LibLangFile >= 32 then
    begin
     NameComponent := nil;
     @NameComponent := GetProcAddress(LibLangFile,'_NameComponent');
     if @NameComponent<>nil then
     begin
       Form1.Caption := NameComponent(32);
       .....
     end;
   FreeLibrary(LibLangFile);
при FreeLibrary(LibLangFile); прога просто закрывается

сама либа

Код:
library librus;

{$mode objfpc}{$H+}

uses
  Classes
  { you can add units after this };

{$R *.res}

function _NameComponent(num : integer) : Pchar;stdcall; export;
const
TMenuMenu = '....;

.....

begin
  case (num) of
  1 : _NameComponent := TMenuMenu;

   .....

  end;
end;

exports
  _NameComponent;

begin
end.
Мозг! Вернись!
Diez_ вне форума Ответить с цитированием
Старый 02.07.2011, 20:15   #6
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Diez_ Посмотреть сообщение
Мда театр одного актера

Уважаемые последний вопрос, помогите дураку, всю голову уже сломал

при выгрузки либы FreeLibrary() прога просто закрывается, а при подключеной либе ошибка при вызови файлового диалога "Проект ... вызвал класс исключения 'External: SIGFPE'."
Глядя на приведённый ниже Вами код, возник вопрос: "У Вас эта функция работает из библиотеки или нет?" И что за файловый диалог? С ShareMem у Вас всё в порядке? Посмотрите вот это. Может с адресом такая же проблема...
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 03.07.2011, 01:48   #7
Diez_
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 27
По умолчанию

у меня в либе содержиться функция локализации проги, которую я вызываю из формы к кторой подключена эта самая либа, про дивлог, для полноты вопросы было сказано, ибо при подключной либе, возникают ошибке в их работе
Мозг! Вернись!
Diez_ вне форума Ответить с цитированием
Старый 03.07.2011, 12:01   #8
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Diez_ Посмотреть сообщение
у меня в либе содержиться функция локализации проги, которую я вызываю из формы к кторой подключена эта самая либа, про дивлог, для полноты вопросы было сказано, ибо при подключной либе, возникают ошибке в их работе
Хорошо. Тогда я попробую воспроизвести примерную Вашу ситуацию. О результате потом напишу.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 04.07.2011, 15:36   #9
Diez_
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 27
По умолчанию

за ранее спасибо за помощь)
Мозг! Вернись!
Diez_ вне форума Ответить с цитированием
Старый 05.07.2011, 00:30   #10
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Diez_ Посмотреть сообщение
за ранее спасибо за помощь)
Вообщем, ситуация следующая здесь написано, что нужно писать так
Код:
@GetSimpleText := nil;
. Здесь этот момент пропущен.
У меня вот так
Код:
@GetSimpleText := nil;
вызывает ошибку, а как у Вас
Код:
GetSimpleText := nil;
всё нормально, но далее на строчке
Код:
@GetSimpleText := GetProcAddress(LibHandle,'GetSimpleText');
выдаёт ошибку, может я какой-то модуль не подключил? Скажите, пожалуйста, какие модули у Вас подключены в обоих проектах?

ЗЫ: в моей библиотеке, функция должна вернуть только одну строку PChar.

[Добавлено] В BDS 2006 всё у меня работает - пошёл курить маны по Lazarus. Что-то наверное где-то я упустил .
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook

Последний раз редактировалось xwicked; 05.07.2011 в 12:08. Причина: Перепроверка :)
xwicked вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие html-файлов в Lazarus student2008 Lazarus, Free Pascal, CodeTyphon 2 25.12.2010 11:07
Подключение DLL Ninetta Общие вопросы .NET 3 01.04.2010 01:06
Подключение DLL __Demon__ C++ Builder 2 09.12.2009 00:29
подключение coredll.dll BattleMage Win Api 1 21.09.2009 14:19
Подключение DLL 5naip Помощь студентам 9 27.10.2007 20:55