程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++封裝庫,封裝庫

C++封裝庫,封裝庫

編輯:C++入門知識

C++封裝庫,封裝庫


1.新建項目 -> Win32項目
    選擇DLL , 勾選 空項目 , 點擊完成。

2.本例程,使用一個CPP文件 , 及一個頭文件。 其中頭文件包含函數聲明,CPP文件實現函數聲明。

3.頭文件: SSLLib.h

#pragma once // 避免重復編繹
#ifndef __SSLLIB_H  //與#pragma once作用一致,兼容設置
#define __SSLLIB_H

#ifndef __DLL_EXPORTS
#define __DLL_EXPORTS _declspec(dllimport)
#endif

//聲明函數接口
extern "C" __DLL_EXPORTS int EncodeRSAKeyFile(const char * _strPemFileName, const char * _strData , unsigned char * buffer , int length ) ;
extern "C" __DLL_EXPORTS int DecodeRSAKeyFile(const char * _strPemFileName , const char * _strData , unsigned char * buffer , int length ) ;

#endif


/////SSLLIB.h 結束符

4.創建與頭文件查關CPP文件 SSLLib.CPP

#include "SSLLib.h" //包含頭文件

//函數實現
int EncodeRSAKeyFile(const char * _strPemFileName , const char * _strData , unsigned char * buffer , int length )  {
//函數實現...
}

int DecodeRSAKeyFile(const char * _strPemFileName , const char * _strData , unsigned char * buffer , int length ){
//函數實現...
}

/////////SSLLib.CPP 結束符

5.在C++文件中使用庫文件
#include "SSLLib.h" //引用頭文件

6.在不同編繹模式,引用靜態文件
#ifdef _DEBUG
#pragma comment(lib , "..\\Debug\\SSLLib.lib");
#else
#pragma comment(lib , "..\\Release\\SSLLib.lib");
#endif

接下來可直接在項目文件中使用剛剛創建的庫。
/////////C++ 引用結束符


7. C#使用


在C#項目文件中創建一個DLL文件夾,將DLL文件及相關的靜態庫文件拷入。

屬性設置:
復制到輸出目錄: 如果較新則復制
生成操作:內容

C# 調用 示例:
[System.Runtime.InteropServices.DllImportAttribute("DLL\\SSLLib.dll", EntryPoint = "EncodeRSAKeyFile")]
        public static extern int EncodeRSAKeyFile([System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string _strPemFileName, byte []  _strData, byte [] buffer, int length);

需要注意的是 C# Byte 類型默認范圍 0 - 255 , C++ Char 默認類型  -128 ~ 127 , 因此在C++ 接口函數聲明時,對應無符號類型 unsigned char








 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved