는 얼마 전에 저는 비주얼 스튜디오 프로젝트에 libssh을 사용했다. 여태까지는 그런대로 잘됐다.Borland Cbuilder 프로젝트에서 libssh를 사용하는 방법은 무엇입니까?
는 지금은 다른 프로젝트, 볼랜드 Cbuilder 프로젝트에 해당 라이브러리를 사용하고 싶습니다. 하지만 이제는 많은 컴파일러 오류가 발생합니다.
#include <libssh/libssh.h>
#include <libssh/sftp.h>
을하지만 이것은 다음과 같은 오류를 제공합니다 :
내가 다음 퍼팅에 의해 시작 헤더에 포함하는 좋은되지 않도록[C++ Error] libssh.h(59): E2209 Unable to open include file 'unistd.h'
이, 유닉스 파일을 참조. 나는 다음과 같은 코드를 볼 수 libssh.h 파일에서 는 :
#define _MSC_VER 1
그러나 나는 또 다른 오류가 발생합니다 :
#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 */
그래서 해결 방법으로 내 헤더 파일에 다음 줄을 포함하도록 시도했다 :
[C++ Error] types.h(47): E2238 Multiple declaration for 'mode_t'
[C++ Error] libssh.h(57): E2344 Earlier declaration of 'mode_t'
짧은 이야기 : 필자가 시도한 다음 해결 방법은 항상 컴파일 오류가 발생합니다.
이 고정 될 수 있는가? 또는 libssh는 Microsoft 컴파일러에서만 사용할 수 있습니까?[편집 :] 내가 다른 일을 시도 : 내 자신의 헤더에 libbssh 헤더의 형식 정의를 포함한다. sftp.h에서 다음 작품에 대한
[C++ Error] sftp.h(50): E2238 Multiple declaration for 'uid_t'
: 그리고 난 다음 오류 얻을
#ifndef uid_t
typedef uint32_t uid_t;
#endif /* uid_t */
나는 깜짝 놀라게하고 있습니다 .... BTW
을, 나는 볼랜드 C를 사용하고 있습니다 ++ 빌더 5.0. 결국 나는 다음과 같은 방법으로 헤더 파일을 고정
사용하는 대신'__BCPLUSPLUS__'의'__BORLANDC__', 그리고'정의 #elif (...)'대신'#else #의 ifdef'. 벤처 캐피탈 ++과 볼랜드 섹션 동일한 코드를 사용하는 경우에, 정의 (_MSC_VER) # 만약'사용하여 함께 병합 || 별개의'# ifdef' 대신에 정의 된 (__ BORLANDC __)' –