对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要,但是对于使用ffi的人来说,使用c或c++编译器,似乎是必不可少的,下面我将讲述如何用Visual Studio 2022 来创建lib和dll,并使用。

静态库的创建并使用

首先打开Visual Studio 2022,点击创建新项目。



选择静态库,然后点击下一步。



点击创建。



Visual Studio 2022会自动生成以下代码:



然后打开项目属性,看一下配置是不是对的,一般来说都是对的。



看看是不是lib。



接下来就是写代码生成lib并测试一下:

1. 编写代码:

比如说,我就想编写一个输出hello World的代码,那该如何编写呢?

首先在头文件中,创建一个hello.h的文件



然后在头文件中,定义一个sayHello的方法。

#include<stdio.h>
void sayHello();



然后Hellolib.cpp在重写这个方法。

// Hellolib.cpp : 定义静态库的函数。
//
#include "pch.h"
#include "framework.h"
#include "hello.h"
// TODO: 这是一个库函数示例
void sayHello()
{
printf("Hello World");
}
  1. Visual Studio自动生成lib

    右键点击这个Hellolib



    点击生成,就行了。



    生成成功:

3.如何使用:

先说一下,生成的lib的位置,就是在上一级的x64的debug文件夹里面。



在这里面新建一个空项目,用于测试lib的,我这里叫它testHello



在testHello里面新建两个文件夹,一个叫include,用来放.h的头文件的,一个叫lib,用来放lib包的。

将我们生成的那个lib放进去,还有之前定义的.h文件也放到include文件里面。

然后右击testHello,打开属性。



然后开始调整:

配置lib



一般来说,不创建源文件,它不会有c/c++编译器,那个选项

然后创建一个test.cpp的源文件。



创建源文件后,在设置一下。

配置include文件



我再说一遍,一定要先创建源文件,不然是没有c/c++的那个选项的。

然后编写相应的代码。

看这个时候,就已经出来了:



编写测试代码:

#include "hello.h"
int main() {
sayHello();
return 0;
}

然后点击运行,就会报错。



这个错误是因为在启动项目的时候,默认运行上一个项目了,我们将它改一下,就行了。

右击解决方案,点击属性。



把启动项目改一下,改成你要运行的那个项目就行了。



运行结果:

动态库的创建并使用

然后就是搞dll文件,新建一个Hellodll项目。



初始化,页面长这样。



创建头文件

#pragma once
#include"pch.h"
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif extern "C" MATHLIBRARY_API void sayHello();

一样的步骤创建cpp实现



点击HelloDll项目,右击生成。



运行结果:



查看生成dll的文件



在这里面新建一个项目 testDll

然后一样的处理,在testDll里面建立一个include文件夹和lib文件夹,include文件夹里面放头文件,lib文件夹里面放dll和lib







然后设置一下include属性



然后设置一下dll和lib







然后编写代码:

#include "Hello.h"
int main()
{
sayHello();
return 0;
}



然后配置一下运行的项目。



点击运行,查看结果,会报错:



然后,把这行#include"pch.h"代码删了



然后运行,运行成功。



由于本人不是主修c++的,有问题的,还请提出来,如确实如此,本人乐意接受。

使用Visual Studio 2022 创建lib和dll并使用的更多相关文章

  1. 在Visual Studio中使用.lib和.dll的环境搭建

    1 静态库和动态链接库的区别 动态链接库是在运行的时候被调用的,静态库在链接的时候被链接到最终生成的应用程序(.exe)中 静态库需要用到的文件 (.lib .h) 头文件(.h)提供接口,库文件(. ...

  2. 使用Visual Studio 2022开发前端

    前端开发环境多数基于Node.js,好处不多说了.但与使用Visual Studio开发的后端Asp.Net Core项目一起调试,却不是很方便,所以试着在Visual Studio 2022中开发前 ...

  3. [翻译]正式宣布 Visual Studio 2022

    原文: [Visual Studio 2022] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或 ...

  4. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...

  5. .NET6系列:微软正式宣布Visual Studio 2022

    系列目录     [已更新最新开发文章,点击查看详细] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意 ...

  6. .NET6系列:Visual Studio 2022 线路图

    系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<Visual Studio 2022>中介绍了VS2022的性能改进与重要功能.本文主要介绍在 Visual Stud ...

  7. Visual Studio 2022 预览版3 最新功能解说

    我们很高兴地宣布Visual Studio 2022 的第三个预览版问世啦!预览版3 提供了更多关于个人和团队生产力.现代开发和持续创新等主题的新功能.在本文中,我们将重点介绍Visual Studi ...

  8. Visual Studio 2022 Community 不完全攻略

    0. 前言 建议结合视频阅读哦 Visual Studio 2022 Community 不完全攻略 有问题或者意见欢迎评论 ! 1. 下载&安装 Visual Studio Communit ...

  9. Visual Studio问题集锦:coloader80.dll未正确安装

    问题 今天在修改之前的一个项目的时候报了一个错,大概内容如下: 有一个 Visual Studio 的 DLL 文件(coloader80.dll)未正确安装.请通过"控制面板"中 ...

  10. Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor

    在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编 ...

随机推荐

  1. 【pytorch】从零开始,利用yolov5、crnn+ctc进行车牌识别

    笔者的运行环境:python3.8+pytorch2.0.1+pycharm+kaggle用到的网络框架:yolov5.crnn+ctc项目地址:GitHub - WangPengxing/plate ...

  2. ios添加库文件

  3. 创建Anaconda虚拟Python环境的方法

      本文介绍在Anaconda环境下,创建.使用与删除Python虚拟环境的方法.   在Python的使用过程中,我们常常由于不同Python版本以及不同第三方库版本的支持情况与相互之间的冲突情况, ...

  4. 关于TCP 四次挥手过程中的reset包问题

    数据包过程 TCP状态机转换过程 客户端在接受到第32个数据包之后,应该发送1个对FIN的ACK数据包,然而客户端缺直接连续发送了3个Rest数据包36~38,客户端并未进入time wait阶段,直 ...

  5. 在线PNG, JPG, BMP 转ICO图标,适用WINDOWS XP, VISTA, 7, 8, 10

    在线PNG, JPG, BMP 转ICO图标网址: http://static.krpano.tech/image2ico 该网站可以把PNG, JPG和BMP图片转换成包含多个层级的ICO图标, 可 ...

  6. 一款广受社区好评的 WAF

    大家好,我是 Java陈序员,我们有时会搭建一个属于自己的网站,但是自建网站很容易被收到攻击,今天给大家介绍一款简单免费好用的 WAF 网站防护工具. WAF 是 Web Application Fi ...

  7. 6.1 KMP算法搜索机器码

    KMP算法是一种高效的字符串匹配算法,它的核心思想是利用已经匹配成功的子串前缀的信息,避免重复匹配,从而达到提高匹配效率的目的.KMP算法的核心是构建模式串的前缀数组Next,Next数组的意义是:当 ...

  8. Navicat连接MySQL,出现2059 - authentication plugin 'caching_sha2_password'的解决方法

    cmd(管理员)登录mysql执行如下 ALTER USER 'YOURUSERNAME'@'localhost' IDENTIFIED WITH mysql_native_password BY ' ...

  9. PostgreSQL学习笔记-3.基础知识:CROSS、INNER、LEFT OUTER、RIGHT OUTER、FULL OUTER、UNION

    PostgreSQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 在 PostgreSQL 中,JOIN 有五种连接类型: CROSS JOIN :交叉连接INNER ...

  10. python - networker api

    Getting Started,概述   NetWorker REST API is an interface that provides programmatic access to the Net ...