对于一个经常写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. Kioptrix Level 1

    Kioptrix这个系列靶机默认是桥接模式,如果我们kali使用NAT是扫描不到靶机的,通过VM的靶机网络设置也不能更改成功. 解决方式:每次下载好靶机先不导入VM,如果已经导入,需要"移除 ...

  2. 云原生 | 企业内使用 CoreDNS 构建高性能、插件化的DNS服务器

    [点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...

  3. RocketMQ 系列(三) 集成 SpringBoot

    RocketMQ 系列(三) 集成 SpringBoot 前两篇文章介绍了 RocketMQ 基本概念与搭建,现在以它与 SpringBoot 的结合来介绍其基本的用法. RocketMQ系列(一) ...

  4. Vika and Her Friends

    Smiling & Weeping ----早知道思念那么浓烈,不分手就好了 题目链接:Problem - A - Codeforces 题目大意:有n个Vika的朋友在一个n*m的方格中去捉 ...

  5. 你准备好了吗,9月19日Java21要来了

    前言 9月份的TIOBE编程语言榜单已公布,Python依然是第一,Java第四. 而这个月还有一个重要的事情,就是9月19日Java21将会全面发布,一段时间没关注的我一口老血喷在屏幕上. 我记得我 ...

  6. 怎么搭建web组态

    web组态是指通过可视化拖拽组件的方式,低代码搭建监控大屏.web页面.物联网各行业的数据以及监控场景,每个行业的业务不同,需要展示的页面也不同.组态快速搭建页面的优势,能更好的满足不同定制化监控页面 ...

  7. ORACLE DBLink创建

    在写测试脚本时,经常需要跨库取数据,SQL本身不支持跨库查找.Oracle提供DBLink链接,支持跨库操作. 1.创建DBLink Create public database link Next_ ...

  8. std::copy与std::back_inserter引发的惨案

    #include <iostream> #include <vector> #include <numeric> #include <sstream> ...

  9. About Info-ZIP

    LATEST RELEASES: Zip 3.00 was released on 7 July 2008. WiZ 5.03 was released on 11 March 2005. UnZip ...

  10. WPF 中引入依赖注入(.NET 通用主机)

    WPF 中引入依赖注入(.NET 通用主机) 在网上看到的文章都是通过 App.cs 中修改配置进行的,这样侵入性很高而且服务主机是通过 App 启动时加载的而不是服务主机加载的 App 有一点违反原 ...