Определение архитекуры процессора в OS Windows
Модератор: Модераторы
- AlphaBlend
- постоялец
- Сообщения: 207
- Зарегистрирован: 22.05.2016 09:13:10
спасибо ) ларчик - то вон как просто открывался )

Код: Выделить всё
function is64bit: Boolean;
type
TisWow64ProcessProc = function (Handle: THANDLE; var is64: BOOL): BOOL; stdcall;
var
is64proc: TisWow64ProcessProc;
res: BOOL;
begin
is64proc:= TisWow64ProcessProc(GetProcAddress(GetModuleHandle('kernel32'), 'IsWow64Process'));
res:=false;
if Assigned(is64proc) then is64proc(GetCurrentProcess, res);
Result:=res;
end;
Так можно через ifdef
Код: Выделить всё
{IFDEF WIN32}
WindowsVerison:=32;
{ELSE}
WindowsVerison:=64;
{ENDIF}
На 64 разрядный процессор может быть поставлена 32 разрядная винда.
Т.к. винда это не линкус, 32-битная программка запустится на 64-битной Винде без проблем. И версия длл-ки понадобится только одна.
да ну...у...
Что же openssl (32) не работает под 64 биткой? Он запускается и вроде как работает но... не работает. Смена длл на 64 битку и всё ок.
Так же и 7-зип себя ведет.
А вот приложение 32 битное, юзающее длл (32/64) работает как на 32-х, так и на 64-х...
п.с.
я сперва так то же думал.Да, всё только 32-битное и проблем не будет.
pupsik писал(а):да ну...у...
Что же openssl (32) не работает под 64 биткой? Он запускается и вроде как работает но... не работает. Смена длл на 64 битку и всё ок.
Так же и 7-зип себя ведет.
А вот приложение 32 битное, юзающее длл (32/64) работает как на 32-х, так и на 64-х...
использую 32-битное приложение, скопилированное в Delphi 7 (для верности! чтобы 64-битного кода не забралось)
приложение использует 32-битную версию openssl (ssleay32.dll, libeay32.dll)
всё работает как часы, на 64-битной системе.
что я делаю не так?
ЗЫ: Хром, которым я захожу на этот форум, то же 32-битный. И работает ведь...
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
скалогрыз, скорее всего, имеется ввиду нечто использующее в 32битной среде один код(набор инструкций), а в 64битной немного другой.
У меня, кстати, 32битные бинарники запускаются под любой современной виндой. Так что я даже не заморачиваюсь с битностью.
У меня, кстати, 32битные бинарники запускаются под любой современной виндой. Так что я даже не заморачиваюсь с битностью.
скалогрыз а я и не сильно спорить пытаюсь. Работает - оки. Только реальная ситуация была. Т.е. 32 битные длл послали подальше. openssl конект не "делал" по https. 7- зип архивировать отказывался. Конечно можно списать на кривые руки и кривых админов... У вас же работает
))
Дык что не обращайте внимания.
п.с.
Вспомнил. Есть ещё один набор компонентов... Определение кодировки файла. На разных системах и битах ведёт себя по разному. Это великолепно "смотрится" в DC. Только уж не надо о моих кривых руках. Есть в нете жалобы на неопределение кодировки. Уж разрабы латают его, латают, а лаг остался (у меня на ос от сборки к сборке вариации происходят).
Ну нет проблем с битность дык это и найс
Дык что не обращайте внимания.
п.с.
Вспомнил. Есть ещё один набор компонентов... Определение кодировки файла. На разных системах и битах ведёт себя по разному. Это великолепно "смотрится" в DC. Только уж не надо о моих кривых руках. Есть в нете жалобы на неопределение кодировки. Уж разрабы латают его, латают, а лаг остался (у меня на ос от сборки к сборке вариации происходят).
Ну нет проблем с битность дык это и найс
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
pupsikдело не в твоих кривых руках. Это явно случай неправильно настроенной (скомпилированной) системы.
По идее, в системе просто должны, при надобности, вызываться 32битные библиотеки (или поддержки 32битного режима), но этого не происходит. Вполне вероятно, что поможет перенос программы (или библиотек) в соответствующую папку.
По идее, в системе просто должны, при надобности, вызываться 32битные библиотеки (или поддержки 32битного режима), но этого не происходит. Вполне вероятно, что поможет перенос программы (или библиотек) в соответствующую папку.
т.е. кривые руки админа... ню-ню...Это явно случай неправильно настроенной (скомпилированной) системы.
а то этого не делалиВполне вероятно, что поможет перенос программы (или библиотек) в соответствующую папку.
А вот с кодировкой. Это отдельный случай. Не выцепил ещё причину.
pupsik писал(а):А вот приложение 32 битное, юзающее длл (32/64) работает как на 32-х, так и на 64-х...
... Много чего делали, а потом решили по простому....
Вот меня интересует это "решение по простому" - что за длл такие 32/64?
Согласно спецификации DLL формата, расширенный идентификатор поддерживает 3 системы: x86. i64 (итаниум 64-бит), x86_64 (православный 64-бит).
Каких либо документированных способов создавать .dll сразу для двух архитектур нет.
Отсюда и вопросы: Как? Что это? И можно ли в руках поддержать этот самый dll 32/64?
pupsik писал(а):openssl конект не "делал" по https. 7- зип архивировать отказывался.
Крокодил не ловится, не растёт кокос.
А конкретные ошибки какие-нибудь библиотеки выдавали ? (например Access Violation) или библиотеки не могли к процессу загрузиться?
скалогрыз в том то и дело: НИКАКИХ ошибок не было... Просто не делало необходимое. Возможно внутри длл и проскакивали ошибки но... Или вы знаете как их отловить (ошибки длл), используя "третьи руки"?
Ппц... вот реально была загвоздка в длл. Т.е. их варианте сборки (32/64). Ну не натыкались вы на такое.... Найс. Но фиг я буду на 64-битку переть ВСЁ 32 битное. Это моё мнение.
п.с.
x86/x86_64
руками подгружались и отзывались... Была загрузка и при "авто" режиме.или библиотеки не могли к процессу загрузиться?
Ппц... вот реально была загвоздка в длл. Т.е. их варианте сборки (32/64). Ну не натыкались вы на такое.... Найс. Но фиг я буду на 64-битку переть ВСЁ 32 битное. Это моё мнение.
п.с.
x86/x86_64
pupsik писал(а):Т.е. их варианте сборки (32/64). Ну не натыкались вы на такое....
так что за вариант-то такой? где взял? как сделал?
dll-ка бывает либо 32битной (и будет работать как на 32, так и на 64-битной винде)
либо 64 битной (и работать будет только на 64 битной винде)
а 32/64 не бывает.
Т.е. вас смущает 32/64
))))
Я не имел ввиду что существуют такие сборки: 32/64. А всего навсего имел ввиду: есть вариант для 32-х, и 64-х... Странно как то это вам пояснять
По поводу примеров....
Они вам надо? Т.е. пока не сталкивались зачем грузить себя? И как это всё касается темы вопроса? Я высказал свое мнение. Нравится оно или нет это не мои проблемы. Вы не натыкались на такой "прикол" и что?
п.с.
Только вот зачем предлагают 32/64 сборки программ и длл. Только ради фана или от нечего делать? Или, возможно, существуют нюансы архитектур?
Я не имел ввиду что существуют такие сборки: 32/64. А всего навсего имел ввиду: есть вариант для 32-х, и 64-х... Странно как то это вам пояснять
По поводу примеров....
Они вам надо? Т.е. пока не сталкивались зачем грузить себя? И как это всё касается темы вопроса? Я высказал свое мнение. Нравится оно или нет это не мои проблемы. Вы не натыкались на такой "прикол" и что?
п.с.
Только вот зачем предлагают 32/64 сборки программ и длл. Только ради фана или от нечего делать? Или, возможно, существуют нюансы архитектур?
pupsik писал(а):Т.е. вас смущает 32/64 )))) Я не имел ввиду что существуют такие сборки: 32/64
Да ну нафиг - не предлагал. Твои слова выше по тексту:
pupsik писал(а):Что же openssl (32) не работает под 64 биткой? ... А вот приложение 32 битное, юзающее длл (32/64) работает как на 32-х, так и на 64-х...
Длл бывают либо 32, либо 64, а вот совместных 32/64 не бывает. Но судя по изложенной тобой проблеме, 32-битная длл у тебя не заработала, а вот длл (32/64) (что бы это не означало), очень даже заработало.
Деталей от тебя не добиться, хотя очень интересно. Если уж пробелма возникла у тебя ( и у похоже, что не у тебя одного ), то значит она может возникнуть у кого-нибудь ещё, и нужно уже сейчас знать как с ней бороться - т.е. менять 32-битные длл, на длл (32/64).
pupsik писал(а):Только вот зачем предлагают 32/64 сборки программ и длл. Только ради фана или от нечего делать? Или, возможно, существуют нюансы архитектур?
64-битные предлагают для тех, где 64-бит могут действительно пригодиться. Например в серверных приложениях, какой-нить базе данных. Адресация терабайт памяти бывает очень удобной.
Для простых смертных 32-битки более чем достаточно.
