putty의 psftp를 이용하여 기존 ftp에 sftp기능을 추가 lib만들기

1. 첫번째 putty의 sftp공개소스 lib만들기

putty의 소스는 대표적인 파일질라. winscp등등 많은 곳에 이용되고 있다..
putty source http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
sftp 프로토콜 http://www.openssh.org/txt/draft-ietf-secsh-filexfer-02.txt
을 참고하여 개발하게 됐다..

putty폴더 안에 psftp폴더의 c로 만들어진 콘솔 프로그램이 있다.
두가지의 생각을 하게 됐다.

1. 콘솔프로그램을 이용한 pipe통신
2. c 프로그램을 lib로 만든다.

1번으로 개발하면 무척 편해진다. 서로 pipe통신만으로 간단하게 sftp를 만들수 있기 때문이다. 뭐 ui적인 문제나 그런것은것이고..
아 참고로 콘솔 exe를 윈도우 안에 가둬서 처리하는 방법을 코드프로젝트의 소스를 이용하여 처리하면 된다.
링크 http://www.codeproject.com/KB/dialog/quickwin.aspx

2번으로 개발 이번에 내가 할것이다. 왜냐면 exe배포문제와 기타 .. 다른 문제로 lib로 만들어서 처리하기로 했다..
약간의 용량적인 문제도 있지만... ^^ 우리회사는 activex로 개발되기 때문에 웹단에서 서비스 이걸로 정했다.

자 그럼 이 프로그램을 lib하자.. ^^
처음으로 c프로그램을 lib하는데 어려움이 있었다. ^^;;
난관을 부딪치며.. 해냈다..
결론은 c프로그램의 lib는 c++프로젝트에서 사용하는데 문제가 있었다.
링크에러가 발생한다.
모든선행조건은 가췄당.. 헤더파일 , lib추가 작업
하지만 c프로그램 lib를 해줘야 할일이 있었다.

첫번째 . c프로그램과 c++프로그램은 다르다라는것..
그럼 c프로그램의 헤더값을
#ifdef __cplusplus
extern "C" {
#endif
.
.
#ifdef __cplusplus
}
#endif

이렇게 묶어 준다. 이것을 해줘야 하는지 몰라서 무척 해맸다...
아마 이것은 링크하는 과정에서 변환하는데.. 이부분이 필요한것같다... 자세한것은 ^^;;;
두번째. lib함수를 사용하기 위해서는 def파일을 생성하여 사용할 헤더의 함수를 선언해줘야 한다.
그렇게 하지않으면 또한 에러가 발생한다.

예제)
LIBRARY "psftp"
EXPORTS
psftp_getcwd @1
psftp_lcd @2
get_file_times @3
ssh_sftp_loop_iteration @4
ssh_sftp_get_cmdline @5
gui_update_stats @6
gui_send_errcount @7
gui_send_char @8
gui_enable @9

간략하게 이정도만 했당 ^^
이렇게 해주고 다시 프로젝트를 빌더 하면 오류없이 잘된다..
ㅎㅎ 만약안되면 ..~~ ^^;; 뭐 다른문제??

댓글

댓글 쓰기

가장 많이 본 글