вызов dll
Модератор: Модераторы
вызов dll
здравствуйте.
подскажите пожалуйста что почитать по работе с dll
есть библиотека написанная на С
мне нужно выполнить её вызов и в дальнейшем работать с её функциями
сама библиотека и её исходники находятся тут
подскажите пожалуйста что почитать по работе с dll
есть библиотека написанная на С
мне нужно выполнить её вызов и в дальнейшем работать с её функциями
сама библиотека и её исходники находятся тут
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Один из вариантов - статический вызов функций.
В секции interface пишете что-то вроде этого:
Далее пользуетесь функцией как обычной.
В секции interface пишете что-то вроде этого:
function FunctionFromDll(parametr: string): integer; external 'MyDll';
Далее пользуетесь функцией как обычной.
ок спасибо это я понял теперь
но мне нужно подключить длл и выполнить сначала одну функцию а затем уже вторую:
BOOL WINAPI SSQ_SetGameServer(char* address);
DWORD WINAPI SSQ_Ping();
но мне нужно подключить длл и выполнить сначала одну функцию а затем уже вторую:
BOOL WINAPI SSQ_SetGameServer(char* address);
DWORD WINAPI SSQ_Ping();
danya писал(а):но мне нужно подключить длл и выполнить сначала одну функцию а затем уже вторую:
Ну, если предыдущее опнятно, то в чем проблема объявить и вторую функцию рядом на следующей строчке?
ну дело в том что появились сомнения 
ведь вторая функция выполняется только после первой
ведь вторая функция выполняется только после первой
хорошо 
тогда последний вопрос)
в документации к библиотеке написано:
DWORD WINAPI SSQ_Ping();
то бишь как я понял переменная типа dword как её преобразовать для вывода в TLabel
при выводе говорит что ожидается TTranslateString, но ничего вразумительного найти не могу
тогда последний вопрос)
в документации к библиотеке написано:
DWORD WINAPI SSQ_Ping();
то бишь как я понял переменная типа dword как её преобразовать для вывода в TLabel
при выводе говорит что ожидается TTranslateString, но ничего вразумительного найти не могу
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
DWORD, если мне память не изменяет, это целочисленный тип. Должно помочь преобразование IntToStr.
При выводе куда?
Добавлено спустя 2 минуты 12 секунд:
Вообще у вас что-то типа этого должно получиться:
при выводе говорит что ожидается TTranslateString
При выводе куда?
Добавлено спустя 2 минуты 12 секунд:
Вообще у вас что-то типа этого должно получиться:
Код: Выделить всё
procedure SSQ_Ping: integer; external 'MyDll';
...
var
x: integer;
begin
x:=SSQ_Ping;
xLabel.Caption:=IntToStr(x);
end;спасибо что-то типо этого и было у меня но ошибки были 
теперь функция возвращает значение -1 т.е. всё хорошо
не поможете теперь со следующим??
объявил функцию
затем делаю вызов
но из-за этого кода прога падает с ошибкой Acess Vialation
теперь функция возвращает значение -1 т.е. всё хорошо
не поможете теперь со следующим??
Код: Выделить всё
BOOL WINAPI SSQ_SetGameServer(char* address);
Parameters
[in]address
The address of the game server to set. Can be a numerical address with port or a hostname address with port in the form "127.0.0.1:27015" or "localhost:27015".
Return Values
If the function succeeds the return value is TRUE.
If the function fails the return value is FALSE.объявил функцию
Код: Выделить всё
function SSQ_SetGameServer(address:string):boolean;
external 'SSQ';затем делаю вызов
Код: Выделить всё
var ping_success:boolean;
begin
ping_success:=SSQ_SetGameServer('217.198.1.76:27038');но из-за этого кода прога падает с ошибкой Acess Vialation
исправил сам но работает через раз
а как использовать классы из .NET??
а как использовать классы из .NET??
Здравствуйте,
не хочу плодить тем, по этому спрошу здесь
пытаюсь написать простенький шаблон для создания плагинов с помощью динамически подключаемых библиотек.
Написал простенькую библиотеку и программу для проверок
загрузка библиотеки, инициализация application и показ формы работают нормально, но если я передаю данные,
то считываются совершенно другое значение, пробовал передавать PCHAR, INTEGER и pointer
исходники прилагаю
p.s. использовал материал http://freepascal.ru/article//freepasca ... 522025034/
пробовал по виндой на Lazarus-0.9.29-27341-fpc-2.4.3-20100913
под линуксом не пробовал пока некогда
не хочу плодить тем, по этому спрошу здесь
пытаюсь написать простенький шаблон для создания плагинов с помощью динамически подключаемых библиотек.
Написал простенькую библиотеку и программу для проверок
загрузка библиотеки, инициализация application и показ формы работают нормально, но если я передаю данные,
то считываются совершенно другое значение, пробовал передавать PCHAR, INTEGER и pointer
исходники прилагаю
p.s. использовал материал http://freepascal.ru/article//freepasca ... 522025034/
пробовал по виндой на Lazarus-0.9.29-27341-fpc-2.4.3-20100913
под линуксом не пробовал пока некогда
- Вложения
-
- modules.zip
- исходники модуля
- (160.82 КБ) 534 скачивания
2danya
напиши хоть в чём ошибка была, может кому нибудь поможет.
классы из .NET, может использовать только .NET приложение. из java только jvm приложение. Даже c++ классы напрямую нельзя из fpc использовать.
исправил сам но работает через раз
напиши хоть в чём ошибка была, может кому нибудь поможет.
а как использовать классы из .NET??
классы из .NET, может использовать только .NET приложение. из java только jvm приложение. Даже c++ классы напрямую нельзя из fpc использовать.
оформил функции так:
и их вызов так
помучав немного стало работать как надо но программа почему-то через определённое время зависает
никто не знает как вылечить??
Код: Выделить всё
function SSQ_Ping:integer; stdcall;
external 'SSQ.dll' name 'SSQ_Ping';
function SSQ_SetGameServer(address:string):boolean; stdcall;
external 'SSQ.dll' name 'SSQ_SetGameServer'; и их вызов так
Код: Выделить всё
address:='simhost.org:27036';
ping_success:=SSQ_SetGameServer(address);Код: Выделить всё
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ping_success:=false;
ping:=SSQ_Ping;
Label1.Caption:=IntToStr(ping);
init:=SSQ_Initialize(false);
end; помучав немного стало работать как надо но программа почему-то через определённое время зависает
никто не знает как вылечить??
danya
тип: char * не соответствует типу String!
тип: char * не соответствует типу String!
а разве в си есть стринг?
как же тогда исправить?? подскажите пожалуйста а то си нас учили уже давненько да и не сказал бы что хорошо
как же тогда исправить?? подскажите пожалуйста а то си нас учили уже давненько да и не сказал бы что хорошо
