IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> visual studio 2019创建dll项目备忘 -> 正文阅读

[开发工具]visual studio 2019创建dll项目备忘

比如我已经在vs中建立了一个叫“MFCApplication1”的MFC 项目,

再要建立一个 dll 项目,

就在“解决方案资源管理器”中的“解决方案xxx”右键,

选择“新建项目”,找到“动态链接库(DLL)”添加,

比如这里我命名为“MyFirstLib”,

这样“解决方案资源管理器”中就可以看到两个项目了,

一个MFC项目,一个DLL项目,

在MyFirstLib项目中,

“头文件”右键添加,新建项目,选择“头文件(.h)”

比如这里我新建了"MyObject.h"这个头文件,

[这里主管曾教我要把生成的头文件

放到一个专门的Include的文件夹下,

我们也来这样操作一番吧]

选中MyFirstLib项目,右键选择“在文件资源管理器中打开文件夹”,

可以看到这里有"MyObject.h"这个头文件,

返回到上一层目录,也即是MyFirstLib文件夹的同级目录,

新建“Include”文件夹,继续在里面新建MyFirstLib\Include这两层文件夹,

[这样做是因为,后面我们可能还要继续新建DLL项目,

比如我一个MFC项目下要用两套相机,需要两套Dll,

所以每个DLL项目的头文件要放到相应的文件夹下]

然后我们回到“MyFirstLib文件夹”中将"MyObject.h"这个头文件,

拷贝到 "Include\MyFirstLib\Include" 路径下,

然后回到vs中,将头文件中的"MyObject.h"右键删除,

再对头文件选项右键选择“添加-现有项目”,

找到 "Include\MyFirstLib\Include" 路径下的"MyObject.h"添加上,

在菜单栏里选择的是Debug与x64,

进入到"MyObject.h"头文件中,

添加指定导出导入的代码,

#ifdef MYOBJECT_EXPORTS
#define MYOBJECT_DLLAPI __declspec(dllexport)
#else
#define MYOBJECT_DLLAPI __declspec(dllimport)
#endif

然后选中“MyFirstLib”项目,Alt+回车打开属性,

在“C/C++”的“预处理器”中的“预处理器定义”中

添加上 MYOBJECT_EXPORTS,

这个时候看编辑环境里的高亮代码颜色,

应该是导出的代码亮了,

#define MYOBJECT_DLLAPI __declspec(dllexport)

这里多谢大佬们分享的博客,不然我也整不明白导出的代码为什么不亮,

之后就是给自己要导出的结构体、类,

添加上?MYOBJECT_DLLAPI

这个放的位置网上有很多大佬分享的博客里有讲,

比如我这里的

typedef struct MYOBJECT_DLLAPI STRU_CHANNEL_INFO
{
	char    chChanName[40];						//通道名称

	STRU_CHANNEL_INFO()
	{
		chChanName[0] = '\0';
	}

}CHANNEL_INFO, * pCHANNEL_INFO;


class MYOBJECT_DLLAPI MyObject
{
public:
	MyObject();
	~MyObject();
};

字符集什么的可能还要按需调整,生成后,

就有 MyFirstLib.dll 和 MyFirstLib.lib 生成,

还有这里在MyFirstLib的属性中,选择“生成事件”,

然后比如选择“生成后事件”,

在命令行里可以添加复制的命令xcopy,

将dll和lib文件在生成后自动复制到相应目录下,

免得我们手动复制了,

命令的话比如

xcopy /y $(OutDir)$(TargetName)$(TargetExt) $(OutDir)..\..\..\Bin\$(Configuration)_$(Platform)


//xcopy /y D:\HIK_DEV\MyProjects\HIKVideoLib\x64\Debug\HIKVideoLib.dll D:\HIK_DEV\MyProjects\HIKVideoLib\x64\Debug\..\..\..\Bin\Debug_x64

感谢主管指导与大佬们分享的博客!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:12:56  更:2022-09-15 02:14:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 11:55:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码