天天看點

初次使用CxImage類庫、VC6配置UNICODE的方法

CxImage類庫是一個圖像操作類庫,功能比較強;是完全免費和公開源碼的;

下載下傳一份,VC6打開,Win7;一共有13個項目;一時看不清;

直接建構;生成一個cximage.lib;莫非是一個靜态庫可直接調用;

靜态庫”和“動态庫”的差別

    靜态庫将導出聲明和實作都放在lib中,編譯後所有代碼都嵌入到宿主程式, 連結器使用從靜态連結庫LIB擷取所有被引用函數的聲明與實作,最後連結生成放入exe檔案。,并将庫同代碼一起放到可執行檔案中。

    動态庫相當于一個h檔案,是對實作部分(.dll檔案)的導出部分的聲明,編譯後隻是将導出聲明部分編譯到宿主程式中,運作時候需要相應的dll檔案支援, 包含了函數所在的DLL檔案和檔案中函數位置的資訊(入口),是以連結器使用從動态庫的LIB擷取所有被引用聲明,最後連結生成放入exe檔案。exe運作時加載在目前目錄中的DLL。是以這種方式稱為動态連結庫dynamic link library。

先按靜态庫的方式調用一下;

#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;
}
           

建構,出現下面錯誤;

初次使用CxImage類庫、VC6配置UNICODE的方法

查網上cximage資料,建構出的lib是unicode版本,需要把工程改為unicode版本;

VC6操作如下,預處理程式定義添加:,UNICODE,_UNICODE;

初次使用CxImage類庫、VC6配置UNICODE的方法

入口點這裡手動輸一下; 因為MFC應用程式有針對Unicode專用的程式入口點,要設定entry point;

初次使用CxImage類庫、VC6配置UNICODE的方法

再建構,一堆錯;生成lib檔案的目錄下還有很多obj檔案,拷貝到項目,再建構,還是一樣;

初次使用CxImage類庫、VC6配置UNICODE的方法

操作了幾次,變成如下;Load函數,載入檔案,3 是jpg檔案的預定義類型;

初次使用CxImage類庫、VC6配置UNICODE的方法

看樣子不行;可能建構cximage時有問題,需要生成dll才能調用;網上先下一個來看;

寫如下的代碼調用動态庫;庫拷貝到項目目錄;使用#import導入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;
}
           

建構一下;出現 fatal error C1083; 

初次使用CxImage類庫、VC6配置UNICODE的方法

查相關資料,先把下面預設項,

初次使用CxImage類庫、VC6配置UNICODE的方法

改為如下;

初次使用CxImage類庫、VC6配置UNICODE的方法

再建構看一下,還是一樣;

然後從 選項 對話框,把庫目錄包含進來;

初次使用CxImage類庫、VC6配置UNICODE的方法
初次使用CxImage類庫、VC6配置UNICODE的方法

再建構;還是一樣;把dll拷貝到系統目錄,運作regsvr32來注冊,注冊不了;

看一下下的dll是32位版,系統是64位;重新下一個cximage的64位dll來,這是别人建構好的;拷貝到系統目錄,注冊;

初次使用CxImage類庫、VC6配置UNICODE的方法
初次使用CxImage類庫、VC6配置UNICODE的方法

    注冊不了, regsvr32 cximage.dll;那麼就無法調用其類庫;

看來Win7以上不能使用CxImage;或者自己按資料把13個項目配置好,建構成功之後再試;