#delphi #pascal
Вопрос:
Я хотел расширить свои знания в области Паскаля, особенно в Delphi RAD Studio, так как его довольно легко скомпилировать для Windows и Android.
Два инструмента, которые я часто использую в C , это curl.exe и openssl.exe, которые являются довольно простыми системными вызовами с помощью popen и считыванием результатов.
Я нашел решения на SO для вызова и чтения из stdout как для сред POSIX, так и для WIN, но все это кажется таким неуклюжим и приведет к тому, что если-определяет, в какой системе работает программа, чтобы затем вызвать соответствующую процедуру в ОС, поскольку, похоже, не существует единого решения как для Android, так и для Windows.
Действительно ли это лучший способ? Или мне лучше просто включить/импортировать предварительно скомпилированную .dll/.so в WIN/ANDROID и напрямую вызывать методы через интерфейс?
Комментарии:
1.
curl.exe
иopenssl.exe
не существуют на Android. Поэтому вам лучше скомпилировать библиотеки libcurl и OpenSSL в свое приложение. Просто обратите внимание, что Android перестал поддерживать OpenSSL в Android 6.0, поэтому вам придется отправлять двоичные файлы OpenSSL вместе с вашим приложением. Во всяком случае, то же самое с libcurl.2. Спасибо, Реми… когда вы говорите «компиляция библиотек libcurl и OpenSSL в ваше приложение», я полагаю, вы имеете в виду включение библиотеки через «LoadLibrary», как описано на этой странице? docwiki.embarcadero.com/RADStudio/Sydney/en/…
3. Это один из способов. Другой вариант-самостоятельно скомпилировать библиотеки в (или найти предварительно скомпилированные) C-совместимые
.obj
объектные файлы, а затем свяжите их в свой исполняемый файл с помощью{$L filename}
, а затем используйте их функции с помощьюexternal
объявлений (аналогично тому, как это делает Indy при статическом связывании ZLib).