Dll и проблемы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Dll и проблемы

Сообщение Sheinina »

Сделали свою dll-ку (первый опыт!), положили в EXE,
в проекте прописано:
procedure fontReplace(String); external 'changeFont.dll';

в фейсе вызывается:
fontReplace(path_to_file+'badge.rtf');

при попытке запуска выходят два сообщения
"Приложению не удалось запуститься, поскольку borlnmdmm.dll не был найден. Повторная установка приложения может исправить эту проблему. "
и
"Не загрузилась динамическая библиотека changeFont.dll: не найден указанный модуль"
Где искать решение проблемы?
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Проверьте галочки линкера при сборке DLL ...
В частности , вкладка Packages - убрать галку Build with runtime packages

еще мастер там вставляет комментарий
To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters

в самой DLL как описана функция , в частности какой тип параметра ?
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

или borlnmdmm.dll тоже положить в exe
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Dll-ку пересобрали, но, похоже, неправильно что-то с параметрами.
На всякий случай заголовок процедуры из дельфийского текста:
procedure FontReplace(FileName: PChar ); safecall; export;

Похоже, она не воспринимает имя файла...
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

может предается объект pfield а вы его pchar хотите
AlexPK
Сообщения: 7
Зарегистрирован: 13 дек 2005, 11:33

Сообщение AlexPK »

Выложите полный текст своей библиотеки и файла проекта галактики, постраюсь помочь
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Моя DLL, работает 100 % не первый уже год, параметры ShortString'ом передаю

Код: Выделить всё

library UserFunc;

uses
  SysUtils,
  Windows,
  Classes,
  NMSMTP;

procedure SendMList(FileName,Addr,TabNum:shortstring);forward;

exports SendMList name 'SENDMLIST'{Отсылка расчетных листов};

{$R *.res}


procedure SendMList(FileName,Addr,TabNum:ShortString);
var
    Mail:TNMSMTP;
    UserName:array [0..33] of char;
    NameLength:DWord;
begin
    NameLength:=32;
    GetUserName(UserName,NameLength);
    Mail:=TNMSMTP.Create(Nil);
    with Mail do
    begin
        Host:='BPMail1';
        PostMessage.FromName:='Расчетная группа бухгалтерии';
        UserID:=UserName;
        Charset:='Windows-1251';
        PostMessage.Subject:='Расчетный листок по зарплате(для таб. № '+TabNum+')';
        PostMessage.Attachments.Add(FileName);
        PostMessage.FromAddress:=UserName+'@blablabla.ru';
        PostMessage.ToAddress.Add(Addr);
        PostMessage.Body.Add('Согласно действующему трудовому кодексу');
        PostMessage.Body.Add('предоставляем Ваш расчетный лист.');
        PostMessage.Body.Add('По всем вопросам обращаться по телефону.');
        PostMessage.Body.Add('79-29-31(59-31) - расчетная группа.');
    end;

    try
        begin
            Mail.Connect;
            Mail.SendMail;
        end;
    finally
        begin
            if(Mail.Connected) then Mail.Disconnect;
            Mail.Free;
        end;
    end;
end;

end.
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
mik
Новичок
Сообщения: 25
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение mik »

убери в в uses sharemem
BORLNDMM.dll, если мне не изменяет память, есть борланд мемори манагер...
либо есть другой вариант. просто кинь эту длл куда нибудь типа Windows\system или в каталог exe.
и кроме того, функция должна быть не SafeCall а Register
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Спасибо всем...
Ответить