Всё делал как здесь: http://www.fpc.by.ru/win32/win32-02.shtml
Проблема возникает с windres, которая на комманду:
windres --preprocessor fprcp -i 1.rc -o 1.res
выдает:
windres: can't open font file 'exception': no such file or directory
ОС: Xp sp-2
FPC: 2.0.4
Чё делать?
Это, кстати, если делать как по ссылке (в .rc-файле подключать #include "commands.pp").
Попробовал я тут не ".pp", а ".ppu"... Теперь ошибка windres: 5:parse error.
Вообще, не могли бы Вы описать процесс создания ресурса...
Вот мой 1.rc
unit commands;
interface
const
cmd_first=$101;
cmd_second=$102;
cmd_exit=$201;
implementation
end.
Мне так и не удалось скомпилировать RES-файл по инструкции, приведенной на fpc.by.ru... Проблема вся в том, что в доках ясно указано, что fprcp берет данные из файла, и выводит их по умолчанию в stdout, то есть на консоль, и по умолчанию ключ -C не установлен, а windres хотя и позволяет задать название программы-препроцессора, к сожалению не позволяет этому самому препроцессору передавать параметры...
Чтобы весь процесс прошел корректно, есть несколько путей:
1. (этот путь упомянут по приведенной ссылке), не пользоваться символическими описаниями констант, а пользоваться только их численными значениями, тогда необходимость в препроцессоре просто отпадает, и проблема решается. Но действительно, тогда придется помнить все эти числовые значения...
2. Подключать файл, в котором константы описаны в стиле C, в принципе - недостаток тот же, нельзя будет напрямую использовать содержимое приинклуденного файла в проекте, хотя windres отрабатывает вот с такими файлами прекрасно:
commands.cpp
#define CMD_FIRST 0x1011.rc
#define CMD_SECOND 0x102
#define CMD_EXIT 0x201
#include "commands.cpp"
MENU1 MENU
BEGIN
POPUP "test"
MENUITEM "FIRST CMD",CMD_FIRST
MENUITEM "SECOND CMD",CMD_SECOND
MENUITEM "EXIT",CMD_EXIT
END
END
copy %1.pp %1.pc
fprcp -i %1.rc -C > %1.tmp
copy %1.tmp %1.pc
windres -i %1.rc -o %1.res
del %1.tmp
del %1.pc
#include "1.pc"
MENU1 MENU
BEGIN
POPUP "COMMANDS"
BEGIN
MENUITEM "FIRST CMD",CMD_FIRST
MENUITEM "SECOND CMD",CMD_SECOND
MENUITEM "EXIT",CMD_EXIT
END
END
Спасибо за мегаисчерпывающий ответ, вопрос закрыт