1.
VC6中使用CxImage这个库.
编译了他的源代码,得到几个.lib
我在VC6中引入这几个lib.然后编译,没报错!
create一个cximage的时候,编译就报错。
下面是错误信息:
Creating library Debug/Test.lib and object Debug/Test.exp
cximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _dcr_cleanup_dcraw
cximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _htons@4
cximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _dcr_flip_index
cximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _dcr_gamma_lut
cximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _dcr_stretch
cximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _dcr_convert_to_rgb
原因:
没有加入libdcr.lib,加进去编译通过了,但是出现了arx程序AcRxDynamicLinker failed to load无法加载*.arx的错误,
用vc自带的Dependency工具查下缺少哪个dll,然后再加入,应该就ok了,终于搞定了。
2.经验之谈:
(1).编译cximage库,我编译的是最新的cximage600_full库。在vc6.0里,打开CxImgLib.dsw文件,注意:我们是要在win32的程序里用cximage的库。所以,编译选项一定要选为win32 debug 或者win 32 released。选择之后,就build就可以了,你也可以单独编译其中一个库,可以进入到jpeg文件夹里单独编译Jpeg.lib这个库。
(2).编译好库,我们新建一个win32的工程,工程设置的内容网上已经很多了。我就转帖一下。
|- C/C++
| |- Code Generation
| | |- Use run-time library : Multithreaded DLL (must be the same for
| | | all the linked libraries) //应该只要是多线程DLL即可,DEBUG的也行
| | |- Struct member alignment : must be the same for all the linked libraries 一般是8字节对 齐,在cximage库里,编译选项是默认的。这里不用管它。
| |- Precompiled headers : not using precompiled headers
| |- Preprocessor
| |- Additional Include Directories: ..\cximage(该处填CxImage里的.h和.cpp文件拷贝并导入工程后所在的文件夹,填写后在工程中include时编译器会查找该文件夹,故include的文件无需路径)
|- Link
|- General
|- Object/library modules:png.lib jpeg.lib zlib.lib tiff.lib jasper.lib cximage.lib cximagecrtd.lib jbig.lib jasper.lib mng.lib libdcr.lib 这里我把编译出来的所有库都放进来了,当然不是完全需要,只是我懒得去找需要的最小集,(如果你编译一堆linker错误,什么symbols。。的,就是因为库没有放全。)
(3).我们把文件:
xfile.h、ximacfg.h、ximadef.h、ximage.cpp、ximage.h、xiofile.h、 xmemfile.cpp、xmemfile.h复制到工程目录里面,有的网友编译以前的版本,可能有
CxImage.h,在最新的库里是没有这个文件的。所以不需要,我们的工程需要包含头文件:#include "ximage.h"就好了。
(4).需要修改文件ximage.h文件和cx.cpp文件里的save和load函数的filename数据类型,以前是wchar,改为char就可以了。
不然编译错误如下:
CXLearn.obj : error LNK2019: unresolved external symbol "public: bool __thiscall CxImage::Save(wchar_t const *,unsigned long)" (?Save@CxImage@@QAE_NPB_WK@Z) referenced in function _wmain