forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   dllVSBlitz (http://forum.boolean.name/showthread.php?t=2810)

Vyacheslav 26.02.2007 19:51

dllVSBlitz
 
Вложений: 2
Если кого-то интересует: простой тест на скорость выполнения dll-ки и стандартной блицовской команды (вычисления расстояния между объектами). Нужно просто запустить пример и напишет, кто больше времени занял. У меня на компе длл-ка то выигрывает, то проигрывает, то одинаково. У кого-то по-другому?

HolyDel 27.02.2007 01:19

Re: dllVSBlitz
 
Цитата:

Сообщение от Vyacheslav
...то выигрывает, то проигрывает, то одинаково...

фейковые расчеты проводить надо.
debuger отключить надо.

Platon 27.02.2007 03:03

Re: dllVSBlitz
 
Гы, нашел что сравнивать, либа в данном примере и не будет выигрывать ибо расчеты примитивные и выполняются что в Блице, что в либе одним и тем же способом.
Преимущество в скорости будет, если расчеты действительно сложные и требуют оптимизации, которую делает интеловский компилятор, или возможности языка.

jimon 27.02.2007 11:12

Re: dllVSBlitz
 
согласен с Cyan

Vyacheslav 27.02.2007 13:28

Re: dllVSBlitz
 
2Cyan: Так может ты предоставишь мне такой тест? Мне интересно посмотреть разницу в скорости.

Да, и еще: как использовать dll-ки, написанные с помощью Delphi (6) ?

Вот, например:

Код:


library delphi_dll;

uses SysUtils, Classes;

function GetSomeText(isRus: Boolean): PChar; stdcall;
begin
  if isRus=true then
    Result := PChar('Рус')
  else
    Result := PChar('Eng');
end;

exports GetSomeText;

begin
end.

Как потом dll-ку загрузить в Блиц. Нужно ли создавать .decls-файл ?:dontknow:

jimon 27.02.2007 17:58

Re: dllVSBlitz
 
Vyacheslav
создавать .decls файл в любом случае надо
можно посмотреть как выглдядит имя функции через depends (ето тулза от MSVS)

Vyacheslav 27.02.2007 18:10

Re: dllVSBlitz
 
1. Что такое фейковые расчеты?
2. depends - она есть в MS VS 2005? Где ее можно найти в файлах?
3. Как работает CallDLL в Блице?

Render 27.02.2007 23:05

Re: dllVSBlitz
 
Цитата:

Сообщение от Vyacheslav
2. depends - она есть в MS VS 2005? Где ее можно найти в файлах?
3. Как работает CallDLL в Блице?

2. Зачем оно надо. Єто уже на крайний случай когда ничего неизвестно о функции
3. Очень просто. Если смотреть по твоему примеру. В нём лучше поставить isRus: integer.
Компилиш пример в дллку. Создаёш деклс, пример оформление есть в папке Юзерлибс. Описуеш свою ф-ю в деклсе

GetSomeText$(isRus%):"_GetSomeText@4"

и в блитце пишеш
Статус = GetSomeText(1)

Vyacheslav 28.02.2007 14:40

Re: dllVSBlitz
 
2Render: Откомпилированная dll-ка из Visual Studio 2005 отлично в Блице работает, а вот из Delphi никак не хочет. Скорее всего, что я неправильно описываю ее где-то (может в decls). У тебя установлен Delphi? Можешь скомпилить простенькую dll-ку с последующей загрузкой в Блиц и привести код (плиз :)) ?

jimon 28.02.2007 15:04

Re: dllVSBlitz
 
скорее имя функции другое

Vyacheslav 28.02.2007 16:37

Re: dllVSBlitz
 
2jimon: Можно тыкнуть пальцем, где неправильно? :) Т.е. я хочу практический урок...

Platon 28.02.2007 17:17

Re: dllVSBlitz
 
Да нет, в коде либы ошибок нет, скорее всего деклс неправильно написал ты, вот так надо:
.lib "НазваниеЛибы.dll"
GetSomeText$(isRus%)

и декорирование имени (_@Size) не обязательно.
ЗЫ
CallDLL не юзай - это атавизм старых версий. У тебя кстати какой версии Блиц?

Vyacheslav 28.02.2007 17:26

Re: dllVSBlitz
 
2Cyan: Thank's, ща попробую переделать. Блиц версии 1.98. А что такое декорирование? _@Size?

Platon 28.02.2007 18:39

Re: dllVSBlitz
 
Декорирование - принудительная установка некоторых параметров линковки, а именно - имени и размера параметров в байтах:
_Имя@РазмерПараметров
Но по-моему это только для либ написаных на С\C++, да и схема декорирования отличается у разных компиляторов.
Юзается например для совместимости такой фичи С\С++ как перегрузка функций - одно и то же имя функции с разными параметрами не воспринимается линковщиком, поэтому применяется декорация типа:
Функция@@XXYYZZ
Функция@@XXYY
Но если юзать модификатор extern "C", то компилятор не будет искажать имена функций. Насчет Дельфи - незнаю как там.

HolyDel 01.03.2007 01:30

Re: dllVSBlitz
 
надо еще вроде extern указывать после функции.


Часовой пояс GMT +4, время: 06:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot