vs2019下 c++中 dll 的新建和引用步骤
在工作目录下新建文件夹 DllImportTest ,作为解决方案所在目录
新建项目动态链接库(DLL)项目 DllDemo
位置 指定到 上面新建文件夹 DllImportTest 所在的路径,解决方案名称 DllImportTest
在解决方案目录下新建 Include,Lib,Output目录
其中 Include 目录用于保存.h 文件,Lib目录用于保存lib 文件,Output 目录用于保存 dll 和 exe文件
在 Include 目录下新建 TestMethod.h 将其添加到 DllDemo 的头文件目录
内容如下:
#pragma once
#include <iostream>
extern "C" __declspec(dllexport) void SayHello();
DllDemo 属性 –> C/C++ -> 常规 -> 附加包含目录 添加 ..\Include 属性页中确定 配置为 "所有配置"
在源文件目录新建TestMethod.cpp
内容如下:
#include "pch.h"
#include "TestMethod.h"
void SayHello()
{
std::cout << "abc" << std::endl;
}
生成项目,此时默认会在解决方案下的Debug 目录下生成 dll, lib, pdb 文件
DllDemo 属性 ->链接器->常规 (dll 输出配置)
输出文件 设置为 $(OutDir)..\Output\$(TargetName)$(TargetExt)
DllDemo 属性 ->链接器->调试 (pdb 输出配置)
生成程序数据库文件 设置为 $(OutDir)..\Output\$(TargetName).pdb
DllDemo 属性 ->链接器->高级 (lib 输出配置)
导入库 设置为 $(OutDir)..\Lib\$(TargetName).lib
生成项目,此时 会在 Output 目录下生成 dll 文件,在 Lib目录下生成lib文件
新建控制台项目 HostDemo
引用 头文件和 lib文件
HostDemo 属性 –> C/C++ -> 常规 -> 附加包含目录 添加 ..\Include
HostDemo 属性 -> 链接器 –> 常规 -> 附加库目录 添加 ..\Lib
HostDemo 属性 -> 链接器 –> 输入 –> 附加依赖项 添加 DllDemo.lib
在 HostDemo.cpp 中 添加 #include "TestMethod.h" 和 SayHello();
内容如下:
#include <iostream>
#include "TestMethod.h"
int main()
{
SayHello();
std::cout << "Hello World!\n";
}
HostDemo属性 ->常规 –>输出目录 设置为 $(SolutionDir)$(Configuration)\..\Output\
生成程序
vs2019下 c++中 dll 的新建和引用步骤的更多相关文章
- 在vs2017和vs2019下发布应用之Windows程序打包-附图标修改和默认安装路径定义全教程
title: 在vs2017和vs2019下发布应用之Windows程序打包-附图标修改和默认安装路径定义全教程 date: 2020-04-25 sidebarDepth: 2 tags: wind ...
- [原创]使用GCC创建 Windows NT 下的内核DLL
原文链接:使用GCC创建 Windows NT 下的内核DLL 在温习<<Windows 2000 Driving>>分层驱动程序一章的时候,看到了关于紧耦合驱动连接方式,这种 ...
- Delphi中DLL的创建和使用(转)
Delphi中DLL的创建和使用 1.DLL简介: 2.调用DLL: 3.创建DLL: 4.两个技巧: 5.初始化: 6.例外处理. 1.DLL简介 ...
- 解决Ubuntu下sublime中不能输入中文的问题
解决Ubuntu下sublime中不能输入中文的问题 Ubuntu下安装sublime后,不能输入中文,而在其他软件中能正常输入,这是sublime的bug,解决方案是在通过shell在每次运行sub ...
- win2k,XP下用setupapi.dll自动安装Driver
win2k,XP下用setupapi.dll自动安装Driver 在驱网看到54cndr 写的这篇文章,虽然自己一直都用Installshield,但还是觉得这个也是一个很好的思路,故摘录在此. 用s ...
- KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态
KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态获取 <寒江独钓>内核学习笔记(5) 继续我们的线程相关的数据结构的学习.接下来我们学习 KTH ...
- 电脑中dll文件丢失怎么恢复?
DLL文件是Windows系统中的动态链接文件,我们在运行程序时都必须链接到dll文件,如果缺少了则无法正常运行,相信大家都会遇到dll文件缺失的情况,那么电脑中dll文件丢失怎么恢复?下面装机之家分 ...
- 将自己的SpringBoot应用打包发布到Linux下Docker中
目录 将自己的SpringBoot应用打包发布到Linux下Docker中 1. 环境介绍 2. 开始前的准备 2.1 开启docker远程连接 2.2 新建SpringBoot项目 3. 开始构建我 ...
- 在Visual Studio项目中根据系统平台自动引用32或64位的DLL
最近在使用Noesis.Javascript.dll,但是这个DLL是有X86与X64二种版本的,我自己的电脑是64位的,但是别人的电脑是32位的.所以在别人那里使用的时候出了问题. 在VS里怎么引用 ...
- Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系
Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 ...
随机推荐
- hdu-2544 最短路(SPFA)
SPFA整体过程 1.用一个队列queue支撑. 2.dis[i]表示目前x到i的距离. 3.b[i]表示i是否在q中. 4.清空队列while(q.size()) q.pop();. 5.初始化(把 ...
- javascript的属性描述符
什么是属性描述对象(attributes object)? 顾名思义,就是用来描述对象属性的对象.javascript内部提供了一个数据结构,用来描述对象的属性以及控制属性的行为. 比如该对象的某属性 ...
- Stanford NLP 在Python环境中安装、介绍及使用
Stanford NLP Stanford NLP提供了一系列自然语言分析工具.它能够给出基本的词形,词性,不管是公司名还是人名等,格式化的日期,时间,量词,并且能够标记句子的结构,语法形式和字词依赖 ...
- pyinstaller打包后运行提示“No module named 'PyQt5' "
记录遇到的一个很傻的问题 脚本用到了PyQt5模块,安装成功脚本可以正常运行,但是使用pyinstaller 打包后,运行 exe文件提示 No module named 'PyQt5' 原因: 因为 ...
- [CSS]背景图片很大,根据屏幕缩小适配后,div之间有空隙的问题
RT.美术给的素材宽度是1080px的. 在不缩放的情况下,1080px宽度的屏幕显示div之间正常,没有空隙,但使用transform属性之后,div缩小,div之间有空隙(白线) 百度有人说给这些 ...
- vue3 reactive值不更新
即上一个随笔里面的form表单数据定义的问题之后,又出现了另一个问题. 页面里面有一个数组: let ruleForm = reactive([ { name:'123456' } ]) 我要 ...
- containerd 卸载
一.创建脚本 cat > remove.sh <<EOF #!/bin/bash # 删除contained命令及配置 rm -rf /usr/local/bin/ rm -rf / ...
- 如何实现chrome谷歌浏览器多开(独立环境 独立cookie)、改任务栏图标
多开谷歌浏览器: 由于各种各样的原因,你可能需要在一个电脑登录某个平台,比如一个电脑登录3个公众号,或者3个知乎等等. 最简单的方案是,直接安装3个不同的浏览器,比如一个谷歌浏览器,一个火狐浏览器,一 ...
- 「DIARY」NOI2021 小结
这篇就主要说一下个人感悟吧,虽然不是金牌选手,但还是希望多多少少能对后来者提供些帮助 1. 预备 省选到 NOI 的准备,就当讲讲故事. 省选考下来好像不是很行,本来退役记都写了一半了,结果发现省队最 ...
- ubuntu16.04编译LAPACK3.7.1出错
NEP: Testing Nonsymmetric Eigenvalue Problem routines ./EIG/xeigtstz < nep.in > znep.out 2> ...