zoukankan      html  css  js  c++  java
  • vs2008编译FileZilla客户端源码

      vs2008编译FileZilla客户端源码

      下载FileZilla客户端源码,下载地址https://download.filezilla-project.org/。

      FileZilla客户端解决方案包含3个工程,分别是:

      engine,核心服务,编译后在lib文件夹下生成engine_unicode.lib,依赖4个库wxWidgets、GnuTLS、sqlite3、GNU IDN Library - Libidn。

      FileZilla,界面程序,编译后生成exe文件,依赖4个库wxWidgets、GnuTLS、sqlite3、GNU IDN Library - Libidn。

      tinyxml,一个轻量级的开源xml解析器,编译后生成tinyxml.lib,关于tinyxml的用法,查看我的另外一篇文章http://www.cnblogs.com/hgwang/p/5833638.html。

      本文介绍一下FileZilla客户端release编译方法(debug类似)。

    1  编译依赖库wxWidgets、GnuTLS、sqlite3、GNU IDN Library - Libidn

      FileZilla的3个工程全部都是unicode编码,以下4个依赖库也应当使用unicode编译。

    1.1  GUI界面库wxWidgets

      wxWidgets编译比较复杂,查看我的另外一篇文章,http://www.cnblogs.com/hgwang/p/6163989.html。

    1.2  GnuTLS

      GnuTLS 是一个安全通讯库,实现了 SSL、TLS 和 DTLS 协议和相关技术。提供了简单的 C 语言编程接口用来访问这些安全通讯协议,提供解析和读写 X.509、PKCS #12、OpenPGP 和其他相关结构。特点是可移植性和高效。下载地址http://josefsson.org/gnutls4win/,安装文件内带有source code,默认为不安装。但这里并不需要。用vs2008 command prompt进入GnuTLS-2.10.1in目录,输入lib /def:libgnutls-26.def,将def文件导出成lib。将头文件和生成的lib路径加入filezilla工程属性。

    1.3  sqlite3

      下载sqlite3源文件,https://www.sqlite.org/。编译后加入头文件和lib路径。

    1. 4  下载GNU IDN Library - Libidn

      下载地址。编译windows文件夹下的项目,将windows include文件夹下的内容拷贝到lib文件夹中,加入头文件引用。

      也可以用libidn-1.27windows下的工程进行编译,但推荐直接使用lib文件夹自带的lib和dll。我用libidn-1.27windows下的工程编译lib,后经dumpbin /exports libidn.lib测试,没有导出任何函数。此问题不在本章范围内,后续再研究。

    2  编译 engine

       engine工程属性->C/C++->General->Additional Include Directories,包含以下文件路径(需要自行修改)

    E:codeEnvirsdklibidn-1.27lib
    E:codeEnvirsdkSQlite3
    E:codeEnvirsdkGnuTLS-2.10.1include
    $(WXWIN)libvc_lib
    ealease-unicodemswu
    $(WXWIN)include
    .
    ../include/

      WXWIN是wxWidgets路径的系统变量,在http://www.cnblogs.com/hgwang/p/6163989.html有介绍。

      engine工程属性->Librarian->General->Additional Dependencies,包含以下lib文件:

    wxzlib.lib
    wxtiff.lib
    wxregexu.lib
    wxpng.lib
    wxmsw28u.lib
    wxjpeg.lib
    wxexpat.lib
    libgnutls-26.lib
    sqlite3.lib
    libidn.lib

      engine工程属性->Librarian->General->Additional Library Directories,包含以下lib文件路径:

    E:codeEnvirsdklibidn-1.27windowslib
    E:codeEnvirsdkSQlite3Release
    E:codeEnvirsdkGnuTLS-2.10.1lib
    E:codeEnvirsdkwxMSW-2.8.12libvc_lib
    ealease-unicode

       其中,E:codeEnvirsdkwxMSW-2.8.12libvc_lib ealease-unicode,release-unicode是我自己添加的文件夹,包含了wxWidgets原本生成在vc_lib下的release+unicode的lib文件。

      编译engine工程,在filezilla-3.6.0.1srclib文件夹下生成engine_unicode.lib。

    3  编译FileZilla

       仿照engine的配置FileZilla工程,此外,由于FileZilla使用wxWidgets的资源编辑器而非vs2008的资源编辑器,应配置资源属性,如下:

      FileZilla工程属性->Resources->Additional Include Directories,加入

    $(WXWIN)libvc_lib
    ealease-unicodemswu
    $(WXWIN)include

    4  编译调错  

      1:编译CAskSavePasswordDialog::Run出错解决方法:

      编译FileZilla工程,报错误

    1>quickconnectbar.obj : error LNK2001: unresolved external symbol "public: static bool __cdecl CAskSavePasswordDialog::Run(class wxWindow *)" (?Run@CAskSavePasswordDialog@@SA_NPAVwxWindow@@@Z)

      unresolved external symbol   CAskSavePasswordDialog::Run。经对比,发现FileZilla工程缺少CAskSavePasswordDialog的h和cpp文件,加入 AskSavePasswordDialog的h和cpp文件。

      2:运行提示缺少libidn.dll

      启动调试,提示缺少libidn.dll。将libidn-1.27windowslib下的libidn.dll拷贝到filezilla-3.6.0.1srcin。

      3:运行提示找不到fzsftp.exe

      提示没有找到fzsftp.exe文件。该文件不在FileZilla的客户端源码内,从FileZilla官网下载客户端安装包,解压后将fzsftp.exe拷贝到filezilla-3.6.0.1srcin(忽略该问题也可以调试

      4:提示找不到resources资源文件

      右键我的电脑->高级系统设置->环境变量->系统变量,新建系统变量“FZ_DATADIR”,路径为src同目录的interface文件夹,或者filezilla安装位置的资源文件夹。

      再次启动调试,OK!

      调试界面如下:

      编译FileZilla客户端比编译服务端复杂很多,客户端的依赖库,除了Tinyxml和sqlite外,别的都没有接触过。特别是wxWidgets,看了一些外文文章,才晓得编译和资源引用方法。比如在resources内加入wxWidgets引用等。

  • 相关阅读:
    MSSQL大量数据时,建立索引或添加字段后保存更改超时该这么办
    POJ 3261 Milk Patterns (后缀数组)
    POJ 1743 Musical Theme (后缀数组)
    HDU 1496 Equations (HASH)
    694. Distinct Substrings (后缀数组)
    POJ 1222 EXTENDED LIGHTS OUT (枚举 或者 高斯消元)
    POJ 1681· Painter's Problem (位压缩 或 高斯消元)
    POJ 1054 The Troublesome Frog (hash散列)
    HDU 1716 排列2
    HDU 4405 Aeroplane chess (概率DP & 期望)
  • 原文地址:https://www.cnblogs.com/hgwang/p/6150420.html
Copyright © 2011-2022 走看看