首页 > 编程语言 >C++如何写一个简单的DLL文件

C++如何写一个简单的DLL文件

时间:2023-08-29 10:08:05浏览次数:41  
标签:__ 文件 int MyDll declspec C++ DLL extern dllexport


  这个东西其实挺简单的,刚开始写的时候,是在VC的编译器上,按照前人的步骤,老失败,折腾我一天了,结果,我换了个编译器,在vs08的平台上,就成功了,好了,不多少了,分享一下:

首先建立一个MyDll的win32 项目中建立一个DLL类型的工程,然后创建一个CPP文件,取名MyDll,内容如下:

extern "C" __declspec(dllexport) int add(int a,int b) //需要注意的是,这个declspec前面是2个下划线
 {
return (a+b);
 }


 extern "C" __declspec(dllexport) int sub(int a,int b)
 {
return (a-b);
 }

编译之后,会在debug中生成dll,lib等文件,这里我只列出我们所需要的文件。


在MyDll工程中再添加一个Test项目,Test项目中的CPP文件(我使用了创建时,自动生成的cpp文件,也就是main函数所在的头文件)其内容为:

#include <iostream>
 using namespace std;


 extern "C" __declspec(dllexport) int add(int a,int b);
 extern "C" __declspec(dllexport) int sub(int a,int b);
 int _tmain(int argc, _TCHAR* argv[])
 {
return 0;
 }



好了,基本上都用好了,还有最关键的一步,就是在MyDll项目属性中->连接器->命令行中->添加MyDll.lib文件

再运行test工程,运行成功!

标签:__,文件,int,MyDll,declspec,C++,DLL,extern,dllexport
From: https://blog.51cto.com/u_13566975/7272443

相关文章

  • MYSQL如何从文件中把数据复制进数据库表中
    。至少有两种修正方法:·编辑文件“mysql.txt”改正错误,然后使用DELETE和LOADDATA清空并重新装载表:·mysql>DELETEFROMpet;·mysql>LOADDATALOCALINFILE'pet.txt'INTOTABLEpet;注:‘***’->是你的文件路径地址然而,如果这样操做,......
  • MySQL借助ibd文件恢复数据技巧?
    还记得我们之前写过的《只需一招,让失控的研发爱上你》吗?前文提到过我们日常使用的比较多的两种数据库恢复方法是:以上两种方法都可以实现实时性的回档,但是你会认为有了这两种技能就够了吗?不….!在线上这种错综复杂的架构中,其实还有很多未知的原因,我们是没法预知的。例如以下这......
  • 大华智慧园区综合管理平台devicePoint_addImgIco任意文件上传漏洞
    漏洞简介大华智慧园区综合管理平台是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。大华智慧园区设备开放了文件上传功能,但未在上传的文件类型、大小、格式、路径等方面进行严格......
  • Java后端向前端返回文件流——实现下载功能
    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个OutPutStream后端可以使用Java中servlet提供的HttpServletResponse,核心步骤是要设置响应的数据类型,设置为某一类......
  • python+selenium+pytest-(5)_yaml文件
    导包importyamlelement.yamllogin:safe:'#element'link:'#element'user:['#element','user1','user2','user3']password:['#element','pw']auth_code:'element......
  • webpack生产环境优化:dll
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:dlldll动态链接库目的:单独的将多个指定的第三方库打包成一个chunk。意义:将不同的库分割开来,实现代码分割和避免重复打包,在节省打包时间的同时方便按需加载和预加载的实现......
  • webpack生产环境优化:dll
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:dlldll动态链接库目的:单独的将多个指定的第三方库打包成一个chunk。意义:将不同的库分割开来,实现代码分割和避免重复打包,在节省打包时间的同时方便按需加载和预加载的实现......
  • golang官方包管理vendor模式无法引用非go文件
    主页微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/背景&问题golang作为高级计算机语言之一,在云原生以及web网站建设中发挥了重要作用,但在实际应用中我们可能会碰到以下场景,在该场景下:部署机无法访问外网,无法直接从互联网下载依赖包golang依......
  • C++ Bjarne Stroustrup
    来自C++之父BjarneStroustrup的人生建议https://mp.weixin.qq.com/s/CULLZELkJpbLJxkGjFxzVA来自C++之父BjarneStroustrup的人生建议 不要过度专业化。不要太笃定自己知晓未来。保持灵活性,记住职业和工作是一个长期的事情。太多的年轻人认为他们可以优化某些东西,然后他们发......
  • 标准C++ -- day06
    一、什么是继承当遇到问题时,先查看现有的类是否能解决一部分问题,如果有则继承该类,并在此基础上扩展以此解决问题,从而缩短解决问题的时间(代码复用)当遇到一个大而复杂的问题时,可以把大问题拆分成若干个不同的小问题,然后为每个小问题设计一个类来解决,最后通过继承的方式把这......