怎么创建dllwenjian_如何创建和使用dll及lib文件

Abstract

如何在VC9环境下创建和使用dll及lib文件,但不用MFC。

一、创建dll

参见文章[zz]lib和dll文件的区别和联系。用方法一,在VC9下测试通过。

创建一个Dynamic Library工程,方法是New Project -> Win32

Console Application -> 在Win32 Application

Wizard中选择DLL和Empty project ->

Finish。假设工程名为testdll。

将文章[zz]lib和dll文件的区别和联系中的h文件和cpp文件copy到工程中。假设两个文件分别是testdll.h和testdll.cpp。不过最好把

#define MYLIBAPI extern "C" _declspec (dllexport)

放在头文件中,因为头文件将会被重用。把这一句放在头文件中可以减小代码量。否则必须在调用程序(主程序)中也写上这一句。

二、使用dll

创建一个空的Win32 Console

Application。命名为calldll。将前面建立的testdll中的testdll.h添加到工程中。这里也可以在工程properties

-> C/C++ -> General ->

Additional Include Directories中添加testdll的目录,则下面简单地写成#include

"testdll.h"就可以了。新建calldll.cpp如下:

#include

#include "testdll工程目录\testdll\testdll.h"

int main()

{

int x=1,y=2;

printf("%d + %d = %d\n",x,y,Add(x,y));

getchar();

}

将前面生成的testdll.lib(注意是lib不是dll)添加到工程中。方法是 Project

-> calldll Properties -> Linker

-> Input -> Additional

Dependenies,添加$(TargetDir)\testdll.lib。同时将前面生成的testdll.lib和testdll.dll拷贝到calldll工程的Debug目录下。这样就可以编译成功了。

三、创建lib

创建Winew Static Library工程。头文件与cpp文件与创建dll类似,不过去掉_declspec

(dllimport),只保留extern "C"。个人怀疑去掉这个extern "C"也是可以的,就留给后人去试吧。

四、使用lib

创建一个空的Win32 Console

Application。命名为calllib。将前面建立的testdll中的testdll.h添加到工程中。这一步与使用dll相同。也可以直接将.h文件copy到calllib目录下。新建calllib.cpp如下:

#include

#include "dll.h"

//LIB testlib.lib

#pragma

comment(lib,"C:\\Users\\Arthur\\Documents\\practise_cpp\\libAndDll\\calllib\\Debug\\testlib.lib")

int main()

{

int x=1,y=2;

printf("%d + %d = %d\n",x,y,Add(x,y));

getchar();

}

将前面生成的testdll.lib拷贝到calllib工程的Debug目录下。不需要像引用dll一样添加Additional

Dependencies。

这样就可以编译成功了。当然,如果不想写#pragma这样一句话,也可以像引用dll一样添加Additional

Dependencies,在使用OpenCV的时候就是这样做的。

--------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes,多云和低代码数据科学:2020年最热门的数据管理趋势

新兴技术为我们的数据之旅铺平了道路。我们已经看到Kubernetes在应用程序自动化方面处于领先地位,越来越多的公司将赌注押在了云上,以及当今的企业对数据科学的依赖程度正不断提,再加上对大数据的人工智能高级分析,可以看到数据管…

matlab光盘映像文件可以删除吗_DVD-Cloner 2020 for mac(DVD光盘刻录工具) 7.00.715

DVD-Cloner Gold 2020版是功能强大的DVD光盘刻录工具,DVD-Cloner Gold 2020版可以轻松刻录光盘以及蓝光光盘,用户可以将任何的文件刻录到DVD光盘中,并可以制作为蓝光光盘,可以很方便地录入视频到光盘中进行保存,刻录好…

性能优化 = 改改代码?

大家好,我是Z哥。好久没写技术文章了,最近正好有进行一些思考,顺手写出来分享给大家。如果不是程序员的话,可以快速扫一眼正文的几个小标题,快速略过即可,毕竟思路和专业无关,很多是相通的。&am…

使用refs获取节点_闲庭信步聊前端 - 原来你是这样的Refs

一、refs 的由来什么是refsrefs是拿到真实的DOM节点和React元素实例的一种方法。在React官方文档中有提到Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。 React是单向的数据流,父子组件的交互是通过props。修改子组件…

从TimeSpan说起

小编在编写WPF程序时,需要做一个判断:定时使用Modbus协议使用Quartz.net 定时任务读取设备中的数据,同时也使用定时任务判断是否长时间获取不到数据的情况,如果程序中超过一分钟没有获取到数据(数据没有更新&#xff0…

华为笔记本软件商店_华为应用市场 PC 端体验:干净好用 - 华为

现在主流的电脑操作系统,主要有 Windows 和 Mac OS 两个。Mac OS 有苹果官方开设的应用市场,下软件时令人很是放心,不会担心有病毒木马或捆绑下载等坑在里面。而 Windows 的应用商店,一言难尽,完全处于水土不服 半死不…

如何维持手机电池寿命_延长手机电池寿命终极技巧教学,iPhone和安卓手机皆适合...

每隔一阵子就开始有不少用户询问,iPhone电池健康度又剩下多少了,怎么朋友的还维持在100%,是不是我手机电池出问题,引起不少用户翻白眼。会有电池健康度,最主要是要让大家了解目前手机电池当前寿命,只要电池…

2020年了,再不会Https就老了

合格的web后端程序员,除搬砖技能,还必须会给各种web服务器启用Https,本文结合ASP.NET Core部署模型聊一聊启用Https的方式。温故知新目前常见的Http请求明文传输,请求可能被篡改,访问的站点可能被伪造。HTTPS是HTTP加上…

c语言枚举类型例题_[开源资讯]Zig 0.6.0 发布,想要挑战 C 语言

Zig 0.6.0 已发布,这是一门通用编程语言,专为稳定性、可维护性和性能而设计,追求替代 C 语言在系统编程上的最佳地位。Zig 具有以下值得关注的特性:手动管理内存与 C 语言竞争而非依赖它,Zig 标准库不依赖于 libc轻量而…

【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置

在上篇文章《【实战 Ids4】║客户端、服务端、授权中心全线打通!》中,我们正式的将三站打通,发布过后,有小伙伴反馈,可能Nginx对配置HTTPS安全协议有点儿问题,我也就半夜趁着没人打扰,疯狂的研究…

快速幂 a*b%c

2020.12.30开始学习AcWing算法《算法竞赛进阶指南》&#xff1b; 在CSDN上传博客方便复习。 //wecccccccc //2020.12.30 #include <iostream> using namespace std; typedef long long int ll;ll fast_power(ll a, ll b, ll c) {ll ans 1;a % c;//防止一开始输入的值过…

thinkphp 助手函数url不生成https_如何用ThinkPHP框架写一个快递查询接口

ThinkPHP是php程序员们经常使用的框架之一&#xff0c;运用框架来开发网站无疑减轻了我们代码量&#xff0c;加快了我们的开发速度&#xff0c;框架底层封装的方法和函数使用起来简直不能太爽。今天给大家总结一个小案例&#xff0c;如何实现一个快递查询的接口。所谓接口&…

64位整数乘法

2020.12.30开始学习AcWing算法《算法竞赛进阶指南》&#xff1b; 上传博客方便复习。 //Wecccccccc //2020.12.30 #include <iostream> using namespace std; typedef unsigned long long int ull;int main() {ull a, b, c;cin >> a >> b >> c;ull ans…

分布式锁的实现与探索

源宝导读&#xff1a;大型的信息化系统对数据准确性的要求很高&#xff0c;所以经常会使用事务、锁、队列等技术&#xff0c;保障高并发下的数据一致性问题。本文将讨论在分布式部署模式下&#xff0c;如何利用锁机制保证业务数据准确的技术探索与实践。一、背景分布式场景下的…

matlab 角度转四元数_基于Matlab的机械臂路径规划

什么是 trajectory(路径)规划中文路径在英语中可能有两种翻译&#xff1a;1. path2. trajectory首先告诉大家&#xff0c;我们所说的“路径”是后者——trajectory。我们看一下这两种“路径”在机械臂的世界里有什么区别。设想机械臂的 end-effector 要从 A 点运动到 B 点&…

ASP.NET Core 中间件的几种实现方式

前言ASP.NET Core 中 HTTP 管道使用中间件组合处理的方式,换句人话来说,对于写代码的人而言,一切皆中间件.业务逻辑/数据访问/等等一切都需要以中间件的方式来呈现.那么我们必须学会如何实现自定义中间件 这里划重点,必考这里我们介绍下中间件的几种实现方式...匿名函数通常新建…

cookies默认过期时间_「图」Chrome Canary新版已启动“增强版cookies控制”预览测试...

近日谷歌承诺将于今年晚些时候在Chrome浏览器启动“增强版cookies控制”的预览测试。在今年的I/O开发者大会上&#xff0c;谷歌宣布携手Mozilla等开发者耗时3年多时间制定了名为“same-site cookies”的IETF 标准&#xff0c;而该功能就是建立在same-site cookies的基础上&…

【原创】StackOverflow 20万关注的问题:如何实现异步Task超时的处理?

前文传送门 dotNET开发系列收藏&#xff01;推荐12个超实用的Visual Studio插件程序员&#xff1a;这10种糟糕的程序命名&#xff0c;你遇到过几个&#xff1f;使用Vistual Studio N年&#xff0c;推荐2个异常捕获的技巧面试官&#xff1a;你连RESTful都不知道我怎么敢要你&…

C# WPF 表单更改提示

微信公众号&#xff1a;Dotnet9&#xff0c;网站&#xff1a;Dotnet9&#xff0c;问题或建议&#xff0c;请网站留言&#xff1b; 如果您觉得Dotnet9对您有帮助&#xff0c;欢迎赞赏Dotnet9.com内容目录实现效果业务场景编码实现本文参考源码下载1.实现效果未做修改的表单展示 …

2k 幻14_幻14、2020雷蛇潜行版、mbp、gs66等笔记本之间的选择??

题主再过一年要出国学习&#xff0c;现在想换一台比较全能的本子&#xff0c;有一定续航能力&#xff0c;做工不能太差&#xff0c;经的起三四年的使用但也希望能打打游戏&#xff0c;求助各位帮忙。预算15000以下&#xff0c;有别的推荐也可以先分析下优缺点&#xff1a;幻14&…