PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » как правильно компилировать 32\64


как правильно компилировать 32\64

Сообщений 1 страница 17 из 17

1

нарыл 5.72 32\64 теперь мучаюсь
в справке не написано где брать другой копилятор
показал я папку с компилятором 32 из винды32, рубанулось
надо рядом с 64 установить версию 32?
или как?
по умолчанию 64 компилит нормально

0

2

newJS
Вроде рядом папки, по стандарту устанавливаешь, может через реестр видит, но в настройках компилятора есть выбор компилятора. А компилировать оба можно только из проекта. Хотя я хотел бы чтобы была возможность не создавая проект компилировать в оба, так как делаю простые программы из одного исходника.

0

3

newJS
Устанавливаешь разной разрядности, потом в настройках указываешь путь к pbcompiler.exe\pbcompilerc.exe
при компиляции выбираешь нужный
https://i120.fastpic.org/big/2022/0609/ec/644a0f9acbee23363df7f459e4b839ec.png

0

4

newJS написал(а):

нарыл 5.72

Дык, уже больше двух лет прошло, как выложили, например, на ру-борде.
Я там, кстати, портабельную версию выкладывал.

0

5

Lin написал(а):

Устанавливаешь разной разрядности

таки оба устанавливать, поставлю не жалко
а я ему притащил папку с винды 32, получается ему всё надо

Smitis написал(а):

Дык, уже больше двух лет прошло, как выложили

надобности не было, 570 устраивала, но была только 32 и винда только 32
теперь есть разные винды, пришлось озаботиться
видел огрызки 573, огрызки нам не надо

0

6

newJS написал(а):

видел огрызки 573, огрызки нам не надо

А как думаешь, в 6.00 какой компилятор идёт тот что не Backend?
А у меня ещё и общий локальный конфиг, в реестре через ком-строку указал. Сейчас в линукс, позже выложу. И конфиг пора мне обновлять, добавил кнопки на панели инструментов - "прыжок в папку исходника" и некоторые настройки: в разделе "Редактор"  вкладки в несколько рядов (прокручивать не люблю) и "Отображать вкладку создания нового файла" (как в браузере), и для линукс в разделе "Панель инструментов" оставил одну панель "Список процедур", а то что-то по дефолту всегда "Формы" встаёт. Просто копирую папку конфигов и сразу настроенный запускается.
Если что мой контент теперь тут, на офсайте в подписи

Отредактировано AZJIO (10.06.2022 08:22:47)

0

7

AZJIO написал(а):

А как думаешь, в 6.00 какой компилятор идёт тот что не Backend?

Формально, PureBasic это компилятор "переднего плана" (front-end), так как он генерирует промежуточный код для другого компилятора. Таким образом, оба и FASM и GCC для него back-end компиляторы.
Хотя Фред, похоже, FASM компилятором заднего плана почему-то не считает. :dontknow:

0

8

Smitis
Я имел ввиду то, что компилятор в 6.00 является по сути последней версией 5.73, это не огрызок, не альфа и не бета, а с вполне заявленными исправлениями.

0

9

AZJIO
не знаю на счёт компиллятора в 6.0, но версия сырая - ресурсы не собирает.

0

10

AZJIO написал(а):

Я имел ввиду то, что компилятор в 6.00 является по сути последней версией 5.73, это не огрызок,

огрызок это бесплатная урезанная(обгрызанная) версия

столкнулся с непоняткой, код в 64 не работает
в системе 64 компилил 32 и 64, 32 работает, а 64 нет
ошибок нет, всё отрабатывает, а картинки нет
может в коде косяк?

Код:

#W=1234



EnableExplicit
UsePNGImageDecoder()
Global imgS, imgD
imgS=LoadImage(#PB_Any, "..\pics\bord14.png"); 24
;imgS=LoadImage(#PB_Any, "..\pics\rotation_1.png"); 32

imgD=CreateImage(#PB_Any, ImageHeight(imgS), ImageWidth(imgS), ImageDepth(imgS), 22222)


Procedure Image_Rotate()
Structure corners
x1.i; левый верхний угол
y1.i
x2.i; правый верхний угол 
y2.i
x3.i; левый нижний угол
y3.i 
EndStructure 
Protected iDc, dc, n.a, new.corners, w, h
w=ImageWidth(imgS)
h=ImageHeight(imgS)
new\x1=0
new\y1=w
new\x2=0
new\y2=0
new\x3=h
new\y3=w
iDc=CreateCompatibleDC_(0)
SelectObject_(iDc, ImageID(imgS))
dc=StartDrawing(ImageOutput(imgD))
n=PlgBlt_(dc, @new, iDc, 0, 0, w, h, 0, 0, 0)
StopDrawing()
DeleteDC_(iDc)
;Debug n
EndProcedure

Procedure senior()
Protected ev, em
If OpenWindow(#W, 870, 640, 400, 300, "")
AddKeyboardShortcut(#W, #PB_Shortcut_Escape, 0); ESC

Image_Rotate()

ImageGadget(234, 9, 9, 0, 0, 0)
SetGadgetState(234, ImageID(imgS))

ImageGadget(235, 229, 9, 0, 0, 0)
SetGadgetState(235, ImageID(imgD))

Repeat
ev=WaitWindowEvent():em=EventMenu()
If ev=#PB_Event_Menu And em=0:Break:EndIf; ESC

Until ev=#PB_Event_CloseWindow
EndIf
EndProcedure

senior()

0

11

bizdon написал(а):

не знаю на счёт компиллятора в 6.0, но версия сырая - ресурсы не собирает.

Сборку ресурсов выполняет porc.exe, а не компилятор.

newJS написал(а):

может в коде косяк?

Структура неправильная. В описании функции PlgBlt сказано что требуется 3-ех элементный массив структур POINT.
У POINT тип полей Long, а не Integer. Т. е.

Код:
  Structure corners
    x1.l; левый верхний угол
    y1.l
    x2.l; правый верхний угол 
    y2.l
    x3.l; левый нижний угол
    y3.l 
  EndStructure 

0

12

Пётр, проверю скажу, здесь у меня только 32

0

13

Петр
А на сколько кретично?

Код:
Massiv.point(3)
Structure 
Point.point
Point.point
Point.point
Endstructure

Может не интегер виноват все же,ведь это какой экран нужен что бы за целое к отрицательному числу выйти при интегер?

Отредактировано Sergeihik (19.06.2022 19:09:54)

0

14

Sergeihik написал(а):

Может не интегер виноват

Сколько байт требует Integer в x64 системе?
Какого типа поля в структуре POINT и сколько они занимают памяти в x64 системе?

0

15

Пётр написал(а):

Сколько байт требует Integer в x64 системе?
Какого типа поля в структуре POINT и сколько они занимают памяти в x64 системе?

В x64 integet можно разный наметить,всё зависит на чем программировать
https://docs.microsoft.com/ru-ru/cpp/cp … w=msvc-170
Также и с функцией(процедурой),можно что бы свой тип ввоспринимала в структуре массиве,как эта работает я конечно не знаю но думаю зачем было делать на 64 бита с большим числом ведь все равно такое число пикселей не влезет в экран компа а их ещё обрабатывать нужно,загружать из памяти и с этими числами работать...
Ps:И вот будет допустим апишная функция под int16 а пурик на полный регистр 64бита скомпилит и что будет?

Отредактировано Sergeihik (19.06.2022 21:41:50)

0

16

Sergeihik написал(а):

В x64 integet можно разный наметить,всё зависит на чем программировать

На PB конечно же. :)  Мы ведь его обсуждаем. 8-)

Я про Integer из PB, а не про stdint.h из си. https://ru.wikipedia.org/wiki/Stdint.h
Эти типы имеют размер независимый от платформы.

Sergeihik написал(а):

но думаю зачем было делать на 64 бита с большим числом ведь все равно такое число пикселей не влезет в экран

4 миллиарда тоже не влезет если что.
Но речь не об этом. Декларация структуры POINT https://docs.microsoft.com/en-us/window … ndef-point
Какой там тип пременных и сколько байт требуется на поле в x64 системе?
Есть ли там типы из stdint.h?

0

17

Пётр, заработало, не поленился, несколько раз поменял туда\сюда, L работает I нет
а в системе 32 работало потому как там L и I равны

Sergeihik написал(а):

Может не интегер виноват все же,ведь это какой экран нужен что бы за целое к отрицательному числу выйти при интегер?

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

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » как правильно компилировать 32\64