参考:https://jingyan.baidu.com/article/ff42efa92c49cfc19e2202fd.html

和htps://jingyan.baidu.com/article/ff411625c7e60812e48237d5.html

和https://blog.csdn.net/baidu_30174103/article/details/80514925

一、首先遇到了VS2015一新建项目就出现未将对象引用设置到对象的实例的问题,参考:https://www.zhihu.com/question/37119592?sort=created 折腾半天,包括  打开--C:\Users\用户名\AppData\Local\Microsoft\VisualStudio\,然后把文件全部删了  也没解决。

VS2017-工具-导入和导出设置-重置所有选项 -重置为C++ 环境   依旧不行。

最后,参考:https://www.itsvse.com/thread-4221-1-1.html 用以下办法,解决了问题。

 、通过命令提示行工具进入VS安装目录下的Common7\IDE

、执行devenv.exe /setup /resetuserdata /resetsettings

、重启VS

二、正式编写DLL

1、VS2017     -    visual C++   -  windows桌面  -  动态链接库(DLL)  ,名称为Dll

2、在Dll.cpp中写以下代码

// Dll.cpp : 定义 DLL 应用程序的导出函数。
// #include "stdafx.h" extern "C" __declspec(dllexport) int __stdcall ADD(int a, int b) {
return a + b;
}

3、编译,成功。

4、找到VS自带的dumpbin,并加入到环境变量中。执行:dumpbin Dll.dll    ,结果没有看到函数名。

三、参考https://blog.csdn.net/Call_Coder/article/details/79331686 重新开始

1、Visual C++->Windows桌面->动态链接库DLL->起名字为first

2, 右侧 头文件->添加->新建项         ,选择头文件,起名字为first

3, 打开first.cpp源文件,内容改为:

// first.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "first.h"
#include <Windows.h>
#include <iostream>
using namespace std;
void show(void)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
cout << " 加";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
cout << "油";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
cout << ",";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE);
cout << "给";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout << "自";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
cout << "己";
}

4、将first.h 头文件改为

#pragma once

__declspec(dllexport) void show(void);

5、生成解决方案。再次用dumpbin查看,和前面的一样?继续吧

6、新建一个C++控制台项目 test  ,把刚才的first.h和first.lib都复制到test的项目文件夹里,把first.dll放到最外边的那个Debug文件夹里

7, 在项目->属性->C/C++->代码生成->运行库->改成DLL(/MDd)然后,在右侧解决方案中的头文件中添加first.h 资源文件中添加first.lib

8、在test.cpp中写

#include "stdafx.h"
#include "first.h" int main()
{
show();
while (true)
{ }
return ;
}

重新生成解决方案,运行test.exe.成功

C++编写 动态链接库dll 和 调用dll的更多相关文章

  1. C++ 生成 dll 和调用 dll 的方法实例(转)

    1)生成dll 建立两个文件 xxx.h , xxx.cpp xxx.h内容如下: #ifdef BUILD_XXX_DLL#define EXPORT __declspec(dllexport)#e ...

  2. C#程序实现动态调用DLL的研究(转)

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  3. C#程序实现动态调用DLL的研究[转]

    摘   要: 在< csdn 开发高手> 2004 年第 03 期中的<化功大法——将 DLL 嵌入 EXE >一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在 ...

  4. C#程序实现动态调用DLL的研究

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  5. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  6. 转【C#调用DLL的几种方法,包括C#调用C\C++\C#DLL】

    C#中dll调用方法   一.      DLL与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一, ...

  7. Java调用.dll文件

    因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,网上也有很多这方面的文档.在网上找到一个开源的组件JNativ ...

  8. VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性

    转自:http://blog.csdn.net/testcs_dn/article/details/27237509 本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链 ...

  9. C#中调用Dll动态链接库

    C#中调用Dll动态链接库 起始 受限于语言的不同,我们有的时候可能会用别人提供的函数及方法 或者其他的什么原因.反正就是要调!!! 恰巧别人所使用的的语言跟自己又不是一样的 这个时候想要调用别人的函 ...

随机推荐

  1. mysql date_format()函数

    DATE_FORMAT(DATE,FORMAT)函数 占位符 说明 %a 缩写的星期几(Sun.....Sat) %b 缩写的月份(Jan.....Dec)  %c 数字形式的月份(1.......1 ...

  2. loj#6436. 「PKUSC2018」神仙的游戏(生成函数)

    题意 链接 Sol 生成函数题都好神仙啊qwq 我们考虑枚举一个长度\(len\).有一个结论是如果我们按\(N - len\)的余数分类,若同一组内的全为\(0\)或全为\(1\)(?不算),那么存 ...

  3. 【20190226】CSS-知识点记录::nth-child,:nth-of-type

    :nth-child: ele:nth-child(k):选择父元素下第k个子元素,且该子元素为ele,若不是,则选择失败,k从1开始计数 ele:nth-child(-n+5):选中前五个子元素,n ...

  4. RabbitMQ 消息流程、AMOP 概念

    AMOP Server:Broker.RabbitMQ Server,实现 AMOP 实体服务,接受客户端的连接 Conneciton:链接,应用程序与 Server 的网络连接 Channel:网络 ...

  5. Linux Linux下最大文件描述符设置

    Linux下最大文件描述符设置 by:授客 QQ:1033553122 1.   系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 6 ...

  6. loadrunner 脚本优化-参数化方法

    脚本优化-参数化方法 by:授客 QQ:1033553122 方法一 1.确定需要参数化的内容 2.选中需要参数化的内容 3.右键选中的内容->Replace with a Parameter- ...

  7. Testlink1.9.17使用方法( 第三章 初始配置[配置用户、产品] )

    第三章 初始配置(配置用户.产品) 一. 设置用户 QQ交流群:585499566 在TestLink系统中,每个用户都可以维护自己的私有信息.admin可以创建用户,但不能看到其它用户的密码.在用户 ...

  8. (网页)HTML5

    1.html5基本格式: <!DOCTYPE> --> 文档类型声明. <html lang="zh-cn"> --> 表示html文档开始 & ...

  9. tkinter进阶版——ttk

    很长的一段时间里,我都是用tkinter进行GUI设计的,还写过一篇<tkinter模块常用参数>. 但后来慢慢地觉得,这个tkinter真的是有点丑啊. 于是,找到了现在的ttk. tt ...

  10. C#-循环语句(六)

    for循环 格式: for(表达式1;循环条件;表达式2) { 循环体; } 解释:先执行表达式1,再判断循环条件是否为真,如果为真则执行循环体,执行完成后再执行表达式2 再次判断循环条件,由此一直反 ...