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