Найдено 16 результатов
- 16.02.2010 15:32:21
- Форум: Lazarus
- Тема: Глобальные переменные
- Ответы: 8
- Просмотры: 7949
Re: Глобальные переменные
Вы обращаетесь из unit1 к переменной основного модуля программы. Это нельзя делать ни в дельфе не в FPC, ни в прочих паскалях. И с настройками лазаруса это никак не связано - нет таких. На самом деле ваша переменная не глобальная, а локальная переменная процедуры PascalMain - точки входа программы ...
- 11.02.2010 21:03:49
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
Тогда похоже на то, что действительно рубанул сплеча и выкинул что-то вроде CheckInitialStkLen (вызывается из инициализации system). С этим нужно поаккуратнее
Добавил - не помогает
function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;assembler;
asm
movq %gs:(8),%rax
subq %gs ...
Добавил - не помогает
function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;assembler;
asm
movq %gs:(8),%rax
subq %gs ...
- 11.02.2010 20:08:02
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
Я, честно говоря, не совсем понимаю, что там творится: ну вычли из стека чуть побольше - это неоптимально, но вроде как работать должно по-прежнему. Или же причина в том, что Win64 предъявляет определенные требования к выравниванию стека, а Win32 - нет?
Это явление удается воспроизвести с ...
Это явление удается воспроизвести с ...
- 11.02.2010 20:00:48
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
coyot.rush писал(а):Как я понял стоит задача по написанию маленькой dll, используй kol. лично сам юзал kol+ mck на lazarus пустое окошко 45 kb![]()
![]()
должно сработать и с dll
Ну она и так маленькая, 4К. KOL не нужен - код состоит из 10 вызовов WinAPI. Вот бы еще с глюками разобраться
- 11.02.2010 19:40:10
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
Ну насчет смартлинка не знаю, но неиспользуемые переменные точно на генерируемый код влиять не должны. Проверил с оригинальной RTL - те же различия. В Win32 тоже. С другой стороны такой баг уже бы вылез везде-вокруг 
- 11.02.2010 18:41:28
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
Отличия есть, да... Выделил жирным:
С переменными:
.386p
DGROUP GROUP _BSS,_DATA
ASSUME CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP
_CODE SEGMENT PARA PUBLIC USE32 'CODE'
ALIGN 16
PUBLIC P$DLL_DOPROCESSATTACH
P$DLL_DOPROCESSATTACH:
push rbp
mov rbp,rsp
sub rsp,272
mov qword ptr [rbp-184],rbx ...
С переменными:
.386p
DGROUP GROUP _BSS,_DATA
ASSUME CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP
_CODE SEGMENT PARA PUBLIC USE32 'CODE'
ALIGN 16
PUBLIC P$DLL_DOPROCESSATTACH
P$DLL_DOPROCESSATTACH:
push rbp
mov rbp,rsp
sub rsp,272
mov qword ptr [rbp-184],rbx ...
- 11.02.2010 18:05:41
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
В том и беда что по теории юзаеться одна деклорация а на практике подключаеться каойнибудь JwaWinVer.pas
Да нет же Только Windows и Messages в uses.
Имхо попроюуй Ollydbg посмотри за Access denied. судя по всему непрвильный дескриптор для отображения файла
CreateFileMapping отрабатывает ...
Да нет же Только Windows и Messages в uses.
Имхо попроюуй Ollydbg посмотри за Access denied. судя по всему непрвильный дескриптор для отображения файла
CreateFileMapping отрабатывает ...
- 11.02.2010 17:30:50
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
попробуй поищи VersionInfo в исходниках fpc у меня 14 совпадений версия 2.4.0
возможно 2) вариант
Не, отпадает... Юзается правильная декларация. TOSVersionInfo только одна, в struct.inc. И потом так работает (TOSVersionInfo и TSecurityAttributes в отдельной функции):
function FakeFunc: ...
возможно 2) вариант
Не, отпадает... Юзается правильная декларация. TOSVersionInfo только одна, в struct.inc. И потом так работает (TOSVersionInfo и TSecurityAttributes в отдельной функции):
function FakeFunc: ...
- 11.02.2010 17:06:12
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Re: Минимальная RTL. Проблемы с DLL
1)Возможно ошибки с типами данных. типо под win32 работает и integer и int64 , а под win64 только int64.
2)Нечто подобное встречалось в delphi глюк заключался в том что если имена переменых совпадают с именами в других модулях (входящих в комплект среды). то возникают "чудеса в решете"
Типы ...
2)Нечто подобное встречалось в delphi глюк заключался в том что если имена переменых совпадают с именами в других модулях (входящих в комплект среды). то возникают "чудеса в решете"
Типы ...
- 11.02.2010 16:15:57
- Форум: Free Pascal Compiler
- Тема: Минимальная RTL. Проблемы с DLL
- Ответы: 21
- Просмотры: 16112
Минимальная RTL. Проблемы с DLL
Требуется длл минимального размера (глобальный хук). Код длл состоит только из API-вызовов. Для этого имеется урезанная RTL состоящая из оригинальных Windows, Messages и порезанного System:
unit System;
interface
{$I-,Q-,H-,R-,V-,S-}
{$mode objfpc}
{systemh.inc}
type
DWord = LongWord ...
unit System;
interface
{$I-,Q-,H-,R-,V-,S-}
{$mode objfpc}
{systemh.inc}
type
DWord = LongWord ...
- 02.02.2010 09:04:43
- Форум: Free Pascal Compiler
- Тема: Прблема с DLL
- Ответы: 2
- Просмотры: 2840
Re: Прблема с DLL
Собсна это даже компилироваться не должно.
program procedure_;
...
begin
...
c:=summaTWU(a,b); // Где декларация функции из длл?
// Почему summaTWU, если ее имя в длл ADD?
// Почему c:=summaTWU, а не summaTWU(с, a, b)?
// Почему TWU? :)
...
end ...
program procedure_;
...
begin
...
c:=summaTWU(a,b); // Где декларация функции из длл?
// Почему summaTWU, если ее имя в длл ADD?
// Почему c:=summaTWU, а не summaTWU(с, a, b)?
// Почему TWU? :)
...
end ...
- 28.01.2010 18:34:41
- Форум: Free Pascal Compiler
- Тема: Перекомпиляция Win64 RTL из под Win32
- Ответы: 5
- Просмотры: 4448
Re: Перекомпиляция Win64 RTL из под Win32
Пасиба. Наверно make поддерживает только компиляцию RTL текущей платформы. В принципе понятно, слишком жирно обеспечить все варианты кросскомпиляции. Вобщем, проблема решена в лоб: fpc -TWin64 -Px86_64 -Us ololo system.pp и т.д.. Благо из RTL, кроме system, нужны только windows и messages. Размер ...
- 28.01.2010 17:22:16
- Форум: Free Pascal Compiler
- Тема: Перекомпиляция Win64 RTL из под Win32
- Ответы: 5
- Просмотры: 4448
Re: Перекомпиляция Win64 RTL из под Win32
Выкинуть ненужное, какой еще может быть? 
- 26.01.2010 21:36:01
- Форум: Free Pascal Compiler
- Тема: Перекомпиляция Win64 RTL из под Win32
- Ответы: 5
- Просмотры: 4448
Перекомпиляция Win64 RTL из под Win32
У когонить получалось перекомпилировать Win64 RTL из под Win32?
Запускаю make в \source\rtl\win64, пишет:
makefile:187: *** The Makefile doesn't support target i386-win64, please run fpc make first. Stop.
Win32 RTL собирается без проблем.
Запускаю make в \source\rtl\win64, пишет:
makefile:187: *** The Makefile doesn't support target i386-win64, please run fpc make first. Stop.
Win32 RTL собирается без проблем.
- 13.01.2010 17:42:12
- Форум: Lazarus
- Тема: Отображение модулей RTL при отладке
- Ответы: 2
- Просмотры: 2294
Re: Отображение модулей RTL при отладке
Нет, это не помогает. Теоритически, нужно иметь RTL скомпиленную с отладочной информацией и где-то в опциях проекта задавать ее путь...
