Была такая проблема с портированием заголовка GLUT.h
Компилятор BlackBox 1.5 не разрешает использование системных флагов в процедурных типах. Параметры-процедуры Вы определяете как обычные процедуры (без системного флага [ccall]). При этом фактические процедуры должны быть определены с этим флагом. Компилятор игнорирует разницу. Проблем не возникает, поскольку эти процедуры вызываются только библитотекой GLUT (т.е. как [ccall]).
Пр.:
Код:
MODULE OglGLUT['glut32'];
PROCEDURE ReshapeFunc* ['glutReshapeFunc'] (f: PROCEDURE (width, height: INTEGER));
....
END OglGLUT.
MODULE OglGLUTExplosion;
...
PROCEDURE [ccall] ReshapeCallback (w, h: INTEGER);
BEGIN
Resize(w, h)
END ReshapeCallback;
PROCEDURE Init (): BOOLEAN;
...
BEGIN
...
GLUT.ReshapeFunc(ReshapeCallback);
...
END Init;
END OglGLUTExplosion.
Компилятор BlackBox 1.6 разрешает использование системных флагов в процедурных типах (и различает их наличие). Поэтому все параметры-процедуры, как и фактические процедуры обратного вызова, обязаны быть объявлены с флагом [ccall].