首页 > 编程语言 >《c++dll篇》VS2019生成dll及调用

《c++dll篇》VS2019生成dll及调用

时间:2024-01-16 10:23:18浏览次数:29  
标签:include VS2019 int c++ 生成 编译 pch dll

VS2019生成dll及调用

生成DLL

1.创建dll工程
image

2.编写dll函数

经过上述过程后工程中会生成几个自带的文件,可以自行创建或者更名,我直接在上面进行编写了。

如下我先在pch.h中创建我需要调用函数的声明,他们分别用于实现加法和取最大值的功能,你可以根据自己的需求更改成自己的子程序。

// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。

#ifndef PCH_H
#define PCH_H

// 添加要在此处预编译的标头
#include "framework.h"
extern "C" _declspec(dllexport) int myAdd(int a, int b);
extern "C" _declspec(dllexport) int myMax(int a, int b);
#endif //PCH_H

然后再phc.cpp文件中编写你的函数功能,如下所示

// pch.cpp: 与预编译标头对应的源文件

#include "pch.h" // 这里放了你函数的声明

// 当使用预编译的头时,需要使用此源文件,编译才能成功。
#include<iostream>
using namespace std;
int myAdd(int a, int b)
{
	return a + b;
}

int myMax(int a, int b)
{
	return a > b ? a : b;
}

最后一步就是要生成dll和lib,只需要运行——生成解决方案,即可

image

由于上述解决方案生成时是在debug模式下的,因此你可以在工程项目的debug目录下找到所生成的dll和lib

image

调用DLL

1.创建一个空的工程项目,创建主程序调用上述的函数

/*main*/
#include<iostream>
#include"pch.h"
using namespace std;

int main()
{
	int a = myAdd(5, 4);
	cout << a << endl;
	int b = myMax(5, 4);
	cout << b << endl;
	return 0;
}

2.添加函数的头文件以及dll和lib

将上一节生成的dll以及dll添加到现在的工程目录下,包括头文件

image

3.容易漏掉的一步,记住千万要把你的添加的lib文件名加入到附加依赖项中,否则会报错。

image

3.运行程序.

image

标签:include,VS2019,int,c++,生成,编译,pch,dll
From: https://www.cnblogs.com/fusio/p/17967046

相关文章

  • 《c++dll篇》VS2015生成dll及调用
    VS2015生成dll及调用原文链接:https://blog.csdn.net/qq_20792765/article/details/109801411创建DLL文件创建的DLL文件包括三个文件(.h/.dll/.lib),1、打开VS新建一个项目。2、选择DLL,附加选项选择空项目3、在头文件和源文件下分别添加如下文件4、在头文件CaculatorDLL.h......
  • 《c++dll篇》VS2008生成dll及调用
    VS2008生成dll及调用原文链接:https://www.cnblogs.com/Ich-Sun/p/6593703.html生成dlladd.h里面的代码:#ifndefDlladd_H_#defineDlladd_H_#ifdefMYLIB#defineMYLIBextern"c"_declspec(dllimport)#else#defineMYLIBextern"C"_declspec(dllexport)#e......
  • C++零碎知识点
    目录RTTI运行时类型信息RTTI运行时类型信息在C++中,RTTI(Run-TimeTypeInformation,运行时类型信息)是一种机制,允许在程序执行期间确定对象的类型。RTTI是为了解决许多类库供应商自行实现此功能而导致的不兼容性问题而添加到C++语言中的。RTTI的主要目的是允许在运行时获取对象......
  • Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456
    一、前言在嵌入式板子上由于没有系统层面的输入法支持,所以都绕不开一个问题,那就是在需要输入的UI软件中,必须提供一个输入法来进行输入,大概从Qt5.7开始官方提供了输入法的源码,作为插件的形式加入到Qt中,这里需要特别提示的是,该源码是gpl的,商业应用对这个比较不感冒,可能更愿意自己基......
  • c++的文件读写
    #define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<stdexcept>#include<algorithm>//1引入头文件#include<fstream>#include<string>//把磁盘信息输入到缓冲区然后读到程序中(读文件)voidtest02(){std::ifstreamifs;ifs.open("t......
  • C++U5-第01课-深度优先搜索1
    在全排列问题中,使用深度优先搜索(DFS)的思想体现在以下几个方面:递归结构:在解决全排列问题的函数中,我们使用了递归调用的方式。通过递归地处理每个位置上的数字,然后继续递归地处理下一个位置上的数字,最终得到完整的排列结果。选择与回溯:在每次递归调用中,我们需要做出选择并标记......
  • C++基础 -20- 基类覆盖父类
    ———————基类覆盖父类——————— ......
  • 用C/C++(Win32API)写软件修改键位
    title:用C/C++(Win32API)写软件修改键位date:2021-06-25categories:编程tags:-键盘-注册表-C/C++-Windows前言紧接上篇《Windows用注册表修改键盘映射(扫描码)》,用起来会发现处处不协调,除了需要熟悉新键位以外,最重要的是原本的快捷键也被拆散了,如原本都在左下角的Ct......
  • C#与C++代码的互操作方式
    title:C#与C++代码的互操作方式date:2024-01-10categories:编程tags:-C#-.NET-C++-COM-平台调用大致介绍在写C#程序时经常有与本地代码(C/C++)代码交互的需求。微软提供了许多种方式供我们选择,最常用的有以下三种(A->B指A可以引用B):flowchartLRA--P/Invoke......
  • C++U6-02-最短路算法1-dijkstra迪杰斯特拉最短路径
    学习目标 最短路径的基本概念  练习1 最短路的定义 本节课迪杰斯特拉dijkstra最短路算法 算法流程:以下是Dijkstra最短路径算法的逐步计算松弛的过程:初始化起始节点的距离为0,其他节点的距离为无穷大。选择当前距离最小且未被访问的节点作为当前节点。......