初次使用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資料,構建出的lib是unicode版本,需要把工程改為unicode版本;
VC6操作如下,預處理程式定義新增:,UNICODE,_UNICODE;
入口點這裡手動輸一下; 因為MFC應用程式有針對Unicode專用的程式入口點,要設定entry point;
再構建,一堆錯;生成lib檔案的目錄下還有很多obj檔案,拷貝到專案,再構建,還是一樣;
操作了幾次,變成如下;Load函式,載入檔案,3 是jpg檔案的預定義型別;
看樣子不行;可能構建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;
查相關資料,先把下面預設項,
改為如下;
再構建看一下,還是一樣;
然後從 選項 對話方塊,把庫目錄包含進來;
再構建;還是一樣;把dll拷貝到系統目錄,執行regsvr32來註冊,註冊不了;
看一下下的dll是32位版,系統是64位;重新下一個cximage的64位dll來,這是別人構建好的;拷貝到系統目錄,註冊;
註冊不了, regsvr32 cximage.dll;那麼就無法呼叫其類庫;
看來Win7以上不能使用CxImage;或者自己按資料把13個專案配置好,構建成功之後再試;
相關文章
- iOS使用Unicode9.0 emoji表情的方法iOSUnicode
- 初次執行 Git 前的配置Git
- 初次使用UbuntuUbuntu
- websocket初次使用Web
- AIX中YUM庫的配置和使用方法AI
- catalyst支援unicode的重要配置Unicode
- dede資料庫類使用方法 $dsql資料庫SQL
- 初次使用Microsoft AzureROS
- unicode轉碼工具類Unicode
- 初次使用linux的感想(轉)Linux
- xUtils類庫的使用
- Windows上TDengine初次使用Windows
- 使用類庫
- 影像程式設計的好幫手-四大影像庫:OpenCV/FreeImage/CImg/CxImage程式設計OpenCV
- Socket類的getInputStream方法與getOutputStream方法的使用
- 各類路由協議配置方法路由協議
- 初次使用無狀態sessionbean的問題SessionBean
- 抽象類和匿名方法的使用抽象
- VC6使用#pragma warning的一點經驗 (轉)
- .NET Standard 類庫的使用技巧
- VC6安裝SP6補丁的方法(超完整!不看後悔) 也即解決VC6編譯連結問題最完整的方法!編譯
- 初次在cmd使用git命令上傳專案至github方法(新手向)Github
- android studio4.0初次gradle配置AndroidGradle
- 初次學習 Docker Volume 的基本使用 (四)Docker
- J2SE - Lombok自動生成實體方法的工具類庫的使用Lombok
- 使用Reflexil修改類庫Flex
- 使用ofstream輸出unicodeUnicode
- druid資料庫連線池的配置類UI資料庫
- Teradata TPT處理Unicode方法Unicode
- golang開發:類庫篇(四)配置檔案解析器goconfig的使用Golang
- 使用 Dnsmasq 自建 DNS 的基本配置方法DNS
- 利用Docker部署管理LDAP及其初次使用DockerLDA
- MYSQL安裝教程及sqlyog初次使用MySql
- 在vue中使用sass的配置的方法Vue
- WPS文字中的表格計算功能的初次使用
- Android NFC的初次使用——公交卡資訊讀取Android
- Java File 類的使用方法詳解Java
- 使用RxJava代替EventBus類庫RxJava