http://filezilla-project.org/download.php?type=client
这里可以下到一个3.4.0的源码
解压后里面会有一个src/interface文件夹,里面有interface工程,使用此工程进行编译。注意这里直接编译的话是编译不过的,会有很多错误,因为filezilla工程依赖其他一些项目:
可以用记事本打开build文件看一下
FileZilla depends on the following libraries:
- wxWidgets 2.8.9 or greater
- libidn
- GnuTLS 2.8.3 or greater
- libdbus on *nix
在windows下编译,必须先准备好前面三个东东。
1.下载wxWidgets 的一个windows版本
比如:http://sourceforge.net/projects/wxwindows/files/2.8.12/wxMSW-2.8.12-Setup.exe/download
解压后window工程在E:/workspace/wxMSW-2.8.12/build/msw下
注意编译的时候选择unicode的配置,因为filezilla是要在unicode下编译的。我选择的是编译静态库版本。
编译时遇到错误:Cannot open include file: 'wx/setup.h': No such file or directory
将E:/workspace/wxMSW-2.8.12/include/wx/msw/setup.h
拷贝至上一级目录
E:/workspace/wxMSW-2.8.12/include/wx/setup.h
即可解决
编译的工程有20个,会生成很多个lib,通通加到filezilla的工程链接依赖中。
2.下载GnuTLS
这里可以下到:http://josefsson.org/gnutls4win/
我下载的版本是gnutls-2.10.1.exe
下载后要去生成一个visual studio可以使用的lib文件
在cmd下切换到安装后的bin目录
C:/Program Files/GnuTLS/bin>lib /def:libgnutls-26.def
使用上面的命令会在bin目录下生成libgnutls-26.lib,这个编译的时候用。
同时还有运行时需要的dll文件libgnutls-26.dll,libgcrypt-11.dll,libgpg-error-0.dll,libtasn1-3.dll
参考:http://josefsson.org/gnutls4win/
Using the GnuTLS DLL from your Visual Studio program这一节
3.下载GNU IDN Library - Libidn
这里可以下到:http://devlinux.net/software/gnu/libidn/
我下载的版本是libidn-1.9.tar.gz
这个文件解压之后会有一个win32目录,用里面的工程编译可以获得一个lib文件libidn.lib
注意要把这些库的include路径加到vc++的include路径中。lib路径加到lib路径中。
最终我编译通过的依赖库列表是:
libgnutls-26.lib
libidn.lib
odbc32.lib
odbccp32.lib
comctl32.lib
wxbase28u.lib
rpcrt4.lib
wsock32.lib
../lib/engine_unicode.lib
Netapi32.lib
Winmm.lib
Ws2_32.lib
mpr.lib
wxmsw28u_core.lib
wxbase28u_xml.lib
wxmsw28u_xrc.lib
wxmsw28u_adv.lib
wxmsw28u_aui.lib
wxbase28u_net.lib
wxpng.lib
wxzlib.lib
wxregexu.lib
wxtiff.lib
wxmsw28u_dbgrid.lib
wxmsw28u_gl.lib
wxmsw28u_html.lib
wxmsw28u_media.lib
wxmsw28u_qa.lib
wxbase28u_odbc.lib
wxmsw28u_richtext.lib
wxexpat.lib
wxjpeg.lib
注意编译的时候一定看好code generation是不是选的/MD
这时候编译链接就过了。
接下来运行
还要注意把GnuTLS生成的dll拷贝到filezilla.exe目录下。