Функции Curl и OpenSSL в Windows и Android

#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).