初次使用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個專案配置好,構建成功之後再試;
相關文章
- catalyst支援unicode的重要配置Unicode
- 初次執行 Git 前的配置Git
- unicode轉碼工具類Unicode
- websocket初次使用Web
- 初次使用UbuntuUbuntu
- freemarker初次使用
- android studio4.0初次gradle配置AndroidGradle
- Windows上TDengine初次使用Windows
- 華為產品庫~初次亮相!
- 使用ofstream輸出unicodeUnicode
- 影像程式設計的好幫手-四大影像庫:OpenCV/FreeImage/CImg/CxImage程式設計OpenCV
- Socket類的getInputStream方法與getOutputStream方法的使用
- golang開發:類庫篇(四)配置檔案解析器goconfig的使用Golang
- .NET Standard 類庫的使用技巧
- druid資料庫連線池的配置類UI資料庫
- 初次學習 Docker Volume 的基本使用 (四)Docker
- 友元類的使用方法
- IntelliJ IDEA 2020.1新增HttpClient類庫的方法IntelliJIdeaHTTPclient
- J2SE - Lombok自動生成實體方法的工具類庫的使用Lombok
- 初次在cmd使用git命令上傳專案至github方法(新手向)Github
- ASP.Net Core 5.0 MVC AppSettings配置檔案讀取,Startup 類中ConfigureServices 方法、Configure 方法的使用ASP.NETMVCAPP
- 織夢資料庫配置檔案修改資料庫配置方法資料庫
- 在vue中使用sass的配置的方法Vue
- 深入理解蘋果系統(Unicode)字串的排序方法蘋果Unicode字串排序
- 使用 ER 方法的資料庫設計方法資料庫
- XGBoost類庫使用小結
- 利用Docker部署管理LDAP及其初次使用DockerLDA
- MYSQL安裝教程及sqlyog初次使用MySql
- MFC之動態呼叫自己寫的類庫中的類的成員方法
- Python中類的建立和使用方法Python
- 使用rollup打包庫的一種基本配置
- 使用 C# 9 的records作為強型別ID - 初次使用C#型別
- Unicode的前世今生Unicode
- unicodeUnicode
- 攔截|篡改|偽造.NET類庫中不限於public的類和方法
- 14 #### 方法分類與使用場景(繫結、靜態、類方法)
- 16 ##### 適合類方法的場景:方法內部如果需要使用當前類的話
- Django資料庫類庫MySQLdb使用詳解Django資料庫MySql