参考: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. 【Spring】27、JPA 实现乐观锁@Version注解的使用

    持久层使用jpa时,默认提供了一个注解@Version来实现乐观锁 简单来说就是用一个version字段来充当乐观锁的作用.先来设计实体类 /** * Created by xujingfeng on ...

  2. Android Studio 学习(二) UI

    TextView android:gravity="center"居中对齐 //文字对齐方式 top bottom left right center android:textSi ...

  3. Offer选择与总结

    今天是2015.11.23,我估计这也是继高考.保研这些决定与选择之后,又一个比较重大的人生选择.最终选择了去微信支付,按钱来说比最高的offer少五万,其实挺心疼的.但是从发展和部门核心程度来讲,应 ...

  4. js canvas 转动时钟实例

    源码:https://pan.baidu.com/s/1R12MwZYs0OJw3OWKsc8WNw 样本:http://js.zhuamimi.cn/shizhong/ 我的百度经验:https:/ ...

  5. vuejs2.0运用原生js实现简单的拖拽元素功能

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  6. 如何用ABP框架快速完成项目(7) - 用ABP一个人快速完成项目(3) - 通过微服务模式而不是盖楼式来避免难度升级和奥卡姆剃刀原理

    这节文章十分重要!十分重要!十分重要!   很多同学在使用ABP的过程中遇到很多问题, 花费了很多时间和精力都还无法解决, 就是卡在这节文章这里.   Talk is cheap, just show ...

  7. 网络基础 记一次HTTPS证书验证测试过程

    记一次HTTPS证书验证测试过程 by:授客 QQ:1033553122 实践 1) 安装证书 选择主机A(假设10.202.95.88)上安装https证书 说明:采用https的服务器,必须安装数 ...

  8. 浅谈Kotlin(四):控制流

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 本篇介绍Kotlin ...

  9. Testlink1.9.17使用方法(第十一章 其他易用性功能)

    第十一章 其他易用性功能 QQ交流群:585499566 一. 自定义 一). 自定义字段管理 在主页点击[自定义字段管理]按钮-->进入自定义字段管理页面,点击[创建]按钮,可以创建一个字段, ...

  10. SpringBoot-学习笔记

    启动方式 运行main方法 @SpringBootApplication public class BootApplication { public static void main(String[] ...