初次使用CxImage类库、VC6配置UNICODE的方法
CxImage類庫(kù)是一個(gè)圖像操作類庫(kù),功能比較強(qiáng);是完全免費(fèi)和公開(kāi)源碼的;
下載一份,VC6打開(kāi),Win7;一共有13個(gè)項(xiàng)目;一時(shí)看不清;
直接構(gòu)建;生成一個(gè)cximage.lib;莫非是一個(gè)靜態(tài)庫(kù)可直接調(diào)用;
?
靜態(tài)庫(kù)”和“動(dòng)態(tài)庫(kù)”的區(qū)別
? ? 靜態(tài)庫(kù)將導(dǎo)出聲明和實(shí)現(xiàn)都放在lib中,編譯后所有代碼都嵌入到宿主程序, 鏈接器使用從靜態(tài)鏈接庫(kù)LIB獲取所有被引用函數(shù)的聲明與實(shí)現(xiàn),最后鏈接生成放入exe文件。,并將庫(kù)同代碼一起放到可執(zhí)行文件中。
? ? 動(dòng)態(tài)庫(kù)相當(dāng)于一個(gè)h文件,是對(duì)實(shí)現(xiàn)部分(.dll文件)的導(dǎo)出部分的聲明,編譯后只是將導(dǎo)出聲明部分編譯到宿主程序中,運(yùn)行時(shí)候需要相應(yīng)的dll文件支持, 包含了函數(shù)所在的DLL文件和文件中函數(shù)位置的信息(入口),因此鏈接器使用從動(dòng)態(tài)庫(kù)的LIB獲取所有被引用聲明,最后鏈接生成放入exe文件。exe運(yùn)行時(shí)加載在當(dāng)前目錄中的DLL。因此這種方式稱為動(dòng)態(tài)鏈接庫(kù)dynamic link library。
?
先按靜態(tài)庫(kù)的方式調(diào)用一下;
#include "stdafx.h" #include "ximage.h" #include <iostream>using namespace std;#pragma comment(lib, "cximage.lib")int main(int argc, char* argv[]) {CxImage img1;img1.Load("a.jpg", 3);int size= img1.GetSize();cout << size << endl;getchar();return 0; }構(gòu)建,出現(xiàn)下面錯(cuò)誤;
查網(wǎng)上cximage資料,構(gòu)建出的lib是unicode版本,需要把工程改為unicode版本;
VC6操作如下,預(yù)處理程序定義添加:,UNICODE,_UNICODE;
入口點(diǎn)這里手動(dòng)輸一下;?因?yàn)镸FC應(yīng)用程序有針對(duì)Unicode專用的程序入口點(diǎn),要設(shè)置entry point;
再構(gòu)建,一堆錯(cuò);生成lib文件的目錄下還有很多obj文件,拷貝到項(xiàng)目,再構(gòu)建,還是一樣;
操作了幾次,變成如下;Load函數(shù),載入文件,3 是jpg文件的預(yù)定義類型;
看樣子不行;可能構(gòu)建cximage時(shí)有問(wèn)題,需要生成dll才能調(diào)用;網(wǎng)上先下一個(gè)來(lái)看;
寫(xiě)如下的代碼調(diào)用動(dòng)態(tài)庫(kù);庫(kù)拷貝到項(xiàng)目目錄;使用#import導(dǎo)入dll;
#include <Windows.h> #include "stdafx.h" #include "ximage.h" #include <iostream>using namespace std;//#pragma comment(lib, "cximage.lib") //typedef int (__stdcall *Func)(int param); #import "cximage.dll" int main(int argc, char* argv[]) {//HINSTANCE hdllInst = LoadLibrary("cximageu.dll"); //Func func=(Func)GetProcAddress(hdllInst,"Load");CxImage img1;img1.Load("a.jpg", 3);int size= img1.GetSize();cout << size << endl;getchar();return 0; }構(gòu)建一下;出現(xiàn) fatal error C1083;?
查相關(guān)資料,先把下面默認(rèn)項(xiàng),
改為如下;
再構(gòu)建看一下,還是一樣;
?
然后從 選項(xiàng) 對(duì)話框,把庫(kù)目錄包含進(jìn)來(lái);
?
再構(gòu)建;還是一樣;把dll拷貝到系統(tǒng)目錄,運(yùn)行regsvr32來(lái)注冊(cè),注冊(cè)不了;
?
看一下下的dll是32位版,系統(tǒng)是64位;重新下一個(gè)cximage的64位dll來(lái),這是別人構(gòu)建好的;拷貝到系統(tǒng)目錄,注冊(cè);
?
? ? 注冊(cè)不了, regsvr32 cximage.dll;那么就無(wú)法調(diào)用其類庫(kù);
?
看來(lái)Win7以上不能使用CxImage;或者自己按資料把13個(gè)項(xiàng)目配置好,構(gòu)建成功之后再試;
總結(jié)
以上是生活随笔為你收集整理的初次使用CxImage类库、VC6配置UNICODE的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Matlab图形用户界面编程初级入门
- 下一篇: Three.js 入门示例