对于一个经常写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. P3874 砍树 题解

    前置 树形 dp,二分. 题意 本质上是一个树上背包,需要选不少于 \(k\) 个物品,每个物品有一个重量 \(w\) 和价值 \(v\),求性价比最大值. 分析 既然是性价比,显然是分数规划. 先介 ...

  2. 《深入理解Java虚拟机》读书笔记:基于栈的字节码解释执行引擎

      虚拟机是如何调用方法的内容已经讲解完毕,从本节开始,我们来探讨虚拟机是如何执行方法中的字节码指令的.上文中提到过,许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行) ...

  3. jQuery默认选中下拉框的某个值

    $("#quaterSelect").val("0");//id为quaterSelect的下拉框默认选中value是0的option选项

  4. 图解 LeetCode 算法汇总——回溯

    本文首发公众号:小码A梦 回溯算法是一种常见的算法,常见用于解决排列组合.排列问题.搜索问题等算法,在一个搜索空间中寻找所有的可能的解.通过向分支不断尝试获取所有的解,然后找到合适的解,找完一个分支后 ...

  5. KRPano JS 场景编辑器源码

    KRPano JS编辑器,可以运行在Node环境中. 源码地址:https://github.com/xxweimei/krpano-editor-js 或者下载zip包:http://pan.bai ...

  6. 每日一题:如何判断是否是数组,一个既简单又复杂的问题。(不要再用Object.prototype.toString.call、instance of判断了!!!)

    1.不要使用Object.prototype.toString.call() 正常情况下: const arr = [1,2,3,4,5] const obj = {} console.log(Obj ...

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

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

  8. Solution -「洛谷 P4007」小 Y 和恐怖的奴隶主

    Description Link. 这道题 的加强版. Solution 题解里面大多数都是概率 DP,或者是期望 DP 然后是逆推.甚至不给 DP 的转移式.机房 yyds Reanap 发了一篇逆 ...

  9. ESS、RSS、TSS

    回归平方和 ESS,残差平方和 RSS,总体平方和 TSS 残差平方和越小,自变量与因变量之间的相关性越好 总变差(TSS):被解释变量Y的观测值与其平均值的离差平方和(总平方和)(说明 Y 的总变动 ...

  10. 爬虫系列——Beautifulsoup4

    文章目录 一 介绍 二 基本使用 三 遍历文档树 四 搜索文档树 五 修改文档树 六 总结 ​ 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能 ...