Некоторое время назад я использовал libssh в проекте Visual Studio. Все идет нормально.
Теперь я хочу использовать эту библиотеку в другом проекте, проекте Borland Cbuilder. Но теперь я получаю много ошибок компилятора.
Я начал с того, что поместил в заголовок следующее:
#include <libssh/libssh.h>
#include <libssh/sftp.h>
Но это дает следующую ошибку:
[C++ Error] libssh.h(59): E2209 Unable to open include file 'unistd.h'
Это относится к файлу unix, так что это нехорошо. В файле libssh.h я вижу следующий код:
#ifdef _MSC_VER
/* Visual Studio hasn't inttypes.h so it doesn't know uint32_t */
typedef int int32_t;
typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
typedef unsigned char uint8_t;
typedef unsigned long uint64_t;
typedef int mode_t;
#else /* _MSC_VER */
#include <unistd.h>
#include <inttypes.h>
#endif /* _MSC_VER */
Поэтому я попытался включить следующую строку в свой заголовочный файл в качестве обходного пути:
#define _MSC_VER 1
Но затем я получаю другую ошибку:
[C++ Error] types.h(47): E2238 Multiple declaration for 'mode_t'
[C++ Error] libssh.h(57): E2344 Earlier declaration of 'mode_t'
Короче говоря: какие бы следующие обходные пути я ни пробовал, я всегда получаю ошибки компилятора.
Можно ли это исправить? Или libssh можно использовать только с компиляторами Microsoft?
[Редактировать:] Я попробовал еще одну вещь: включить typedefs из заголовка libbssh в мой собственный заголовок. Затем я получаю следующую ошибку:
[C++ Error] sftp.h(50): E2238 Multiple declaration for 'uid_t'
для следующего фрагмента из sftp.h:
#ifndef uid_t
typedef uint32_t uid_t;
#endif /* uid_t */
Я ошеломлен....
Кстати, я использую Borland C++builder 5.0. (Я знаю, что это древнее)