当前位置: 代码迷 >> 综合 >> BM3D fftw Libpng zlib 编译记录
  详细解决方案

BM3D fftw Libpng zlib 编译记录

热度:86   发布时间:2024-01-28 16:34:19.0

由于 这两款的版本可能不对应 编译的时候 libpng中是已经预先 设定了指定的 zlib 版本 比如 1.2.8版本 所以要根据需求改名字。

 

libpng用于图片处理,zlib用于压缩。两者密切相关,libpng依赖zlib。

 

复制 自:lemianli

编译库:

1. 先下载 libpng(http://sourceforge.net/projects/libpng/files/)和libz(http://zlib.net/zlib-1.2.7.tar.gz),将libpng解压,如C:\workspace\libpng\。

2. 将libz解压,改名zlib放到libpng同级目录,如C:\workspace\zlib。

3. 进入libpng\projects\visualc71\,用visual studio打开工程文件,方案中会有三个子工程:libpng, pngtest, zlib。直接编译,不出意外会在Win32_DLL_Debug目录下和Win32_DLL_Debug\ZLib目录下生成zlib1d.dll, libpng15d.dll, libpng.lib和zlib.lib等库文件。

4.若报错,拷贝scripts/pnglibconf.h.prebuilt到源码目录,改名为pnglibconf.h

 

 

对于要用到这两个库的工程,主要需要做三件事:

1. C/C++常规->附加包含目录中把包含png.h等头文件的目录加进来

2. 链接器->输入->附加依赖项中加zlib.lib;libpng.lib。

3.通用属性->VC++ 目录->库目录中把放着zlib.lib和libpng.lib的目录加进来。

dll 是无法添加的?????

然后 cd 无法切换 盘符 采用直接  E:

 

然后按照 https://blog.csdn.net/moyumoyu/article/details/7950528 进行配置

可以直接带上头文件 #include "fftw3.h" 即可

dll 放在 中并不行 windows/system32

还是放在 C:\Windows\SysWOW64   解决的问题。

这两句话要放在 最前面才行。 M_PI

#define _USE_MATH_DEFINES
#include <cmath>

 

 

 

 

解决 fopen 函数的安全性 warning问题:

(无法解决)1、在文件开头添加 #define _CRT_SECURE_NO_WARNINGS

(解决)3、在 项目->属性->C/C++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS

 

只生成了 libpng16, 未生成libpng16d 。 是通过改名字成libpng16d  解决的。

 

全部为32位的。

dll 全部都 放在了:  C:\Windows\SysWOW64

debug 的速度很慢

release 则要对应release的 pnglib。dll

 

%(AdditionalIncludeDirectories) 附加包含库目录

E:\software\programming\MATLAB\MATLAB2017a\extern\include\win64

E:\software\programming\MATLAB\MATLAB2017a\extern\include

现在 改为 2018b了

E:\software\programming\MATLAB\2018b\extern\include\win64;E:\software\programming\MATLAB\2018b\extern\include;

 

D:\my project\VSProjects\bm3dDenoising\BM3D C++\zlib-1.2.8
D:\my project\VSProjects\bm3dDenoising\BM3D C++\lpng

 

%(AdditionalLibraryDirectories) 附加库目录

E:\software\programming\MATLAB\MATLAB2017a\extern\lib\win64\microsoft;

改为:

E:\software\programming\MATLAB\2018b\extern\lib\win64\microsoft;

用到的 lib

libmat.lib
libmx.lib
libmex.lib
libeng.lib
zlib.lib
libpng.lib
libfftw3-3.lib
libfftw3f-3.lib
libfftw3l-3.lib

 

 

最后转到 x64后 发现 dll 要放到system32才行。!!!!!!!!!

x64后 程序快了一倍。

  相关解决方案