Помогите, пожалуйста, разобраться с директивами компилятора. Для меня FreePascal новая и еще не изученная штука.
Я сделал полную трансляцию SQLite3 API для делфи и несложный объектный враппер для нее -- теперь хочу это дело адаптировать для FreePascal. В принципе, всё уже хорошо компилируется и работает, но у меня нет возможности протестировать работоспособность библиотеки в Linux и MacOS X.
В связи с этим вопросы:
1) что такое {$LINKLIB *}? Нужно ли это использовать? Я импортирую функции из библиотеки классическим делфийским способом:
- Код: Выделить всё
function sqlite3_open(const filename: PAnsiChar; var ppDb: PSQLite3): Integer; cdecl; external sqlite3_lib;
константу sqlite3_lib я задаю так:
- Код: Выделить всё
const
{$IFDEF MSWINDOWS}
sqlite3_lib = 'sqlite3.dll';
{$ENDIF}
{$IFDEF UNIX}
sqlite3_lib = 'sqlite3.so';
{$ENDIF}
{$IFDEF DARWIN}
sqlite3_lib = 'libsqlite3.dylib';
{$ENDIF}
Будет ли это работать, к примеру, на MacOS X? Я просто встречал какие-то хитрости с {$LINKLIB *}, поэтому берут сомнения...
Подскажите, пожалуйста.
2) По поводу {H+}. Эта директива по умолчанию добавляется в новые модули при работе в Lazarus. Нужно ли мне использовать ее, если я работаю с WideString-ами? В делфи вроде как {H+} включена по умолчанию.
3) Нужно ли устанавливать совместимость с сишными рекордами при помощи директив {$PACKENUM 4} и {$PACKRECORDS C}, если в функциях используются указатели на рекорды, сами рекорды не передаются? Нужно ли использовать packed record-ы вместо обычных?
Я буду также рад, если кто-нибудь поможет протестировать библиотеку под Linux и MacOS X. Ну или вообще протестировать библиотеку, если интересно. Приаттачу по первому запросу.