使用vs2019用c++创建dll库

1.创建dll项目
新建项目,选择“动态链接库(DLL)”,接着点击下一步。
 

在这里插入图片描述

 

然后配置新项目,项目名称我写的是“Dll3”,以及“将解决方案和项目放在同一目录中”那里打勾,接着点“创建”。注意记着位置,避免生成之后找不到

在这里插入图片描述
2.更改我们的头文件和源文件
上面创建完了之后,你会得到这样的头文件和源文件。

 在这里插入图片描述

 

里面的内容分别是(里面原先的内容不重要哈,扫一眼就好)

接下来的就重要了
首先我们改源文件里的“pch.h”
将先前的“pch.h”里的内容删光光。换为我们需要的方程,这里用的例子如下(加减乘除)。

注意修改项目属性-> C/C++ -> 预处理器 ->预处理器定义,添加TESTDLLEXPORT

// pch.h 

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

#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"

#endif //PCH_H
#ifdef TESTDLLEXPORT
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif

#ifdef __cplusplus
extern "C" {
#endif
    DLLEXPORT int add(int a, int b);
    DLLEXPORT int minus(int a, int b);
    DLLEXPORT int multiply(int a, int b);
    DLLEXPORT double divide(int a, int b);

#ifdef __cplusplus
}
#endif


 

接着修改“pch.cpp”
将先前的“pch.cpp”里的内容删光光。换为我们需要的如下。

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

#include "pch.h"

// 当使用预编译的头时,需要使用此源文件,编译才能成功。
int add(int a, int b)
{
    return a + b;
}

int minus(int a, int b)
{
    return a - b;
}

int multiply(int a, int b)
{
    return a * b;
}

double divide(int a, int b)
{
    double m = (double)a / b;
    return m;
}

3.生成DLL文件,找到我们的DLL文件。
右键我们的项目,点击生成。

在这里插入图片描述

 

接着成功了,我们继续哈。至于为啥链接不一致,暂时先不管。

接着我们去我们的项目位置的那去找,我的是在“C:\Users\Administrator\source\repos\Dll3\Debug”,如图,(找不到的就去第一步那个位置那里的项目的debug目录里找,看生成dll文件)

到这里就算生成好了

你可能会碰到2个问题:

1、warning C4273: dll 链接不一致(上面的pch.h已经参考此方案解决)

解决方案如下:

在编译Dll文件的时候遇到dll 链接不一致的问题,头文件如下:

#ifdef TESTDLLEXPORT
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
DLLEXPORT void test();
 
#ifdef __cplusplus
}
#endif

将pch.h所有自动生成的代码删除,复制以上所有代码到pch.h中


虽然外部程序可以正常调用test();但链接不一致的根源是第一行TESTDLLEXPORT没有预定义

解决办法:项目属性-> C/C++ -> 预处理器 ->预处理器定义,添加TESTDLLEXPORT即可。
 

2、在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h“

方法一:

注意将自定义的.cpp文件和.h文件需要添加进项目中
选择报错的.cpp或者.c文件,右键-属性-预编译头-不使用预编译头即可

 参考网址:https://blog.csdn.net/KOBO_24/article/details/112040572

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值