对于一个经常写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. 当小白遇到FullGC

    起初没有人在意这场GC,直到它影响到了每一天! 前言 本文记录了一次排查FullGC导致的TP99过高过程,介绍了一些排查时思路,线索以及工具的使用,希望能够帮助一些新手在排查问题没有很好的思路时,提 ...

  2. redis分布式锁,setnx+lua脚本的java实现

    1 前言 在现在工作中,为保障服务的高可用,应对单点故障.负载量过大等单机部署带来的问题,生产环境常用多机部署.为解决多机房部署导致的数据不一致问题,我们常会选择用分布式锁. 目前其他比较常见的实现方 ...

  3. Redis漏洞总结--未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543)

    Redis未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543) 环境复现 采用Vulfocu ...

  4. Modbus转Profinet网关连接三菱变频器博图快速配置

    Modbus转Profinet网关连接三菱变频器博图快速配置 本案例将分享如何使用兴达易控的modbus转profinet网关(XD-MDPN100)来连接西门子1200系列plc,并实现三菱变频器的 ...

  5. Three.js中实现一个OBBHelper

    1. 引言 Three.js中,Box3对象指的是AABB式的包围盒,这种包围盒会随物体的旋转而变换大小,精度较差 Three.js中还有OBB对象,这是一种能表现物体主要特征的.不随物体的旋转而变换 ...

  6. c语言代码练习3

    //查看数字是否存在于数组中#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 0; int ...

  7. CSP-J 2022 游记

    10.9 早上睡到 7:00. 上午继续学习 Vim,学习哈希表. 10.11 白天线段树,区间加从六参改成四参就过了 晚上模拟赛,感觉良好 10.16 膜你赛,std变量命名毒瘤. 想用 geogb ...

  8. js数据结构--树

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  9. Nginx-多功能脚本

    #!/bin/bash #2020年2月16日 #auto_install_nginx_web.v3 #by fly ################################ #NGX_VER ...

  10. C# WebBrowser document.execCommand()解析

            //         // Summary:         //     对文档执行指定的命令.         //         // Parameters:         ...