VS2013编译libpng

⌚Time: 2023-12-06 09:01:55

👨‍💻Author: Jack Ge

编译依赖项下载:

cmake下载:cmake.org

libpng下载:http://www.libpng.org

zlib下载:http://www.zlib.net/

我下载了zlib127-dll.zip、lpng1256.zip、CMake3.8.0,注意你下载的应该是zlib已经编译好的windows版本而不是源代码,如果你下载的是源代码版本。需要另行编译zlib库。这不是多此一举?

解压下载的东西

打开cmake-gui,在源代码目录填写解压的libpng目录,在build目录随便填写一个目录存放生成的VS2013项目文件

因为需要依赖zlib,所以要设置zlib的包含目录,点击Add Entry按钮,把解压的zlib的头文件目录和库文件依次加入变量ZLIB_INCLUDE_DIR、ZLIB_LIBRARY

最后是这样

之后点击Configure,编译工具选择VS2013

出现配置的参数,根据自己的需要配置。其中CMAKE_INSTALL_PREFIX就是之后安装库的目录,可以自己设置。PNG_SHARED是生成动态库,PNG_STATIC是生成静态库。两个选项都选就都生成。

再点一次Configure全部参数就配置完成了

点击Generate生成项目,再点击Open Project打开项目,就会启动VS2013

点击生成,批生成,勾选ALL_BUILD的Debug和Release,点击生成就会生成libpng库了

之后批生成勾选INSTALL,点击生成就会安装到之前设定的库安装目录

这是安装后的libpng库目录结构


├─bin

│      libpng-config

│      libpng12-config

│      libpng12.dll

│      libpng12d.dll

│

├─include

│  │  png.h

│  │  pngconf.h

│  │

│  └─libpng12

│          png.h

│          pngconf.h

│

├─lib

│  │  libpng12_static.lib

│  │  libpng12_staticd.lib

│  │  png12.lib

│  │  png12d.lib

│  │

│  └─pkgconfig

│          libpng.pc

│          libpng12.pc

│

└─man

    ├─man3

    │      libpng.3

    │      libpngpf.3

    │

    └─man5

            png.5

由于使用动态库版本的zlib,使用libpng编译的程序运行依赖zlib1.dll文件,并且在编译时需要zlib的头文件和库文件的参与

后记:

在CMake配置参数时要将PNG_NO_CONSOLE_IO参数和PNG_NO_STDIO参数取消,这样才能导出_png_init_io等符号。否则之后如果要使用png_init_io函数时,在链接阶段会找不到符号报错

取消勾选参数后导出的符号包含了_png_init_io


        F _png_info_destroy

        F _png_info_init_3

        F _png_init_io

        8 _png_init_read_transformations

而之前只有下面几个,因此链接报错


        F _png_info_destroy

        F _png_info_init_3

        8 _png_init_read_transformations