|
Библиотеки Сторонние библиотеки для Blitz |
26.02.2007, 19:51
|
#1
|
ПроЭктировщик
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение (для 4 участников)
|
dllVSBlitz
Если кого-то интересует: простой тест на скорость выполнения dll-ки и стандартной блицовской команды (вычисления расстояния между объектами). Нужно просто запустить пример и напишет, кто больше времени занял. У меня на компе длл-ка то выигрывает, то проигрывает, то одинаково. У кого-то по-другому?
|
(Offline)
|
|
27.02.2007, 01:19
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: dllVSBlitz
Сообщение от Vyacheslav
...то выигрывает, то проигрывает, то одинаково...
|
фейковые расчеты проводить надо.
debuger отключить надо.
|
(Offline)
|
|
27.02.2007, 03:03
|
#3
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: dllVSBlitz
Гы, нашел что сравнивать, либа в данном примере и не будет выигрывать ибо расчеты примитивные и выполняются что в Блице, что в либе одним и тем же способом.
Преимущество в скорости будет, если расчеты действительно сложные и требуют оптимизации, которую делает интеловский компилятор, или возможности языка.
|
(Offline)
|
|
27.02.2007, 11:12
|
#4
|
|
Re: dllVSBlitz
согласен с Cyan
|
|
|
27.02.2007, 13:28
|
#5
|
ПроЭктировщик
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение (для 4 участников)
|
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-файл ?
|
(Offline)
|
|
27.02.2007, 17:58
|
#6
|
|
Re: dllVSBlitz
Vyacheslav
создавать .decls файл в любом случае надо
можно посмотреть как выглдядит имя функции через depends (ето тулза от MSVS)
|
|
|
27.02.2007, 18:10
|
#7
|
ПроЭктировщик
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение (для 4 участников)
|
Re: dllVSBlitz
1. Что такое фейковые расчеты?
2. depends - она есть в MS VS 2005? Где ее можно найти в файлах?
3. Как работает CallDLL в Блице?
|
(Offline)
|
|
27.02.2007, 23:05
|
#8
|
Знающий
Регистрация: 12.07.2006
Сообщений: 283
Написано 16 полезных сообщений (для 32 пользователей)
|
Re: dllVSBlitz
Сообщение от Vyacheslav
2. depends - она есть в MS VS 2005? Где ее можно найти в файлах?
3. Как работает CallDLL в Блице?
|
2. Зачем оно надо. Єто уже на крайний случай когда ничего неизвестно о функции
3. Очень просто. Если смотреть по твоему примеру. В нём лучше поставить isRus: integer.
Компилиш пример в дллку. Создаёш деклс, пример оформление есть в папке Юзерлибс. Описуеш свою ф-ю в деклсе
GetSomeText$(isRus%):"_GetSomeText@4"
и в блитце пишеш
Статус = GetSomeText(1)
|
(Offline)
|
|
28.02.2007, 14:40
|
#9
|
ПроЭктировщик
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение (для 4 участников)
|
Re: dllVSBlitz
2Render: Откомпилированная dll-ка из Visual Studio 2005 отлично в Блице работает, а вот из Delphi никак не хочет. Скорее всего, что я неправильно описываю ее где-то (может в decls). У тебя установлен Delphi? Можешь скомпилить простенькую dll-ку с последующей загрузкой в Блиц и привести код (плиз ) ?
|
(Offline)
|
|
28.02.2007, 15:04
|
#10
|
|
Re: dllVSBlitz
скорее имя функции другое
|
|
|
28.02.2007, 16:37
|
#11
|
ПроЭктировщик
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение (для 4 участников)
|
Re: dllVSBlitz
2jimon: Можно тыкнуть пальцем, где неправильно? Т.е. я хочу практический урок...
|
(Offline)
|
|
28.02.2007, 17:17
|
#12
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: dllVSBlitz
Да нет, в коде либы ошибок нет, скорее всего деклс неправильно написал ты, вот так надо:
.lib "НазваниеЛибы.dll"
GetSomeText$(isRus%)
и декорирование имени (_@Size) не обязательно.
ЗЫ
CallDLL не юзай - это атавизм старых версий. У тебя кстати какой версии Блиц?
|
(Offline)
|
|
28.02.2007, 17:26
|
#13
|
ПроЭктировщик
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение (для 4 участников)
|
Re: dllVSBlitz
2Cyan: Thank's, ща попробую переделать. Блиц версии 1.98. А что такое декорирование? _@Size?
|
(Offline)
|
|
28.02.2007, 18:39
|
#14
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: dllVSBlitz
Декорирование - принудительная установка некоторых параметров линковки, а именно - имени и размера параметров в байтах:
_Имя@РазмерПараметров
Но по-моему это только для либ написаных на С\C++, да и схема декорирования отличается у разных компиляторов.
Юзается например для совместимости такой фичи С\С++ как перегрузка функций - одно и то же имя функции с разными параметрами не воспринимается линковщиком, поэтому применяется декорация типа:
Функция@@XXYYZZ
Функция@@XXYY
Но если юзать модификатор extern "C", то компилятор не будет искажать имена функций. Насчет Дельфи - незнаю как там.
|
(Offline)
|
|
01.03.2007, 01:30
|
#15
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: dllVSBlitz
надо еще вроде extern указывать после функции.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:03.
|