博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++封装库
阅读量:5334 次
发布时间:2019-06-15

本文共 1726 字,大约阅读时间需要 5 分钟。

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

 

转载于:https://www.cnblogs.com/a_bu/p/4398222.html

你可能感兴趣的文章
python多目录字符串查找匹配
查看>>
【bzoj1954】Pku3764 The xor-longest Path Trie树
查看>>
PHP 如何安全的使用 MySQL ?
查看>>
网站CSS写在html里面的好处
查看>>
随机笔记
查看>>
BZOJ1951 [Sdoi2010]古代猪文
查看>>
给自己的职业规划
查看>>
关于类初始化时非法向前引用变量的问题
查看>>
5-3图层的层次关系
查看>>
操作订单时出现的事务问题
查看>>
C# 获取客户端IP地址
查看>>
jmeter(二十一)JMeter 命令行(非GUI)
查看>>
静态成员与实例成员
查看>>
mysql 占用的内存大小
查看>>
接口隔离原则
查看>>
开源协议
查看>>
mysql 数据类型转换
查看>>
Html5标签一览
查看>>
html---心得4
查看>>
【AtCoder】ARC103
查看>>