对于一个经常写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();
#include<stdio.h>
void sayHello();
然后Hellolib.cpp在重写这个方法。
// Hellolib.cpp : 定义静态库的函数。//#include "pch.h"#include "framework.h"#include "hello.h"// TODO: 这是一个库函数示例void sayHello(){ printf("Hello World");}
// Hellolib.cpp : 定义静态库的函数。
//
#include "pch.h"
#include "framework.h"
#include "hello.h"
// TODO: 这是一个库函数示例
void sayHello()
{
printf("Hello World");
}
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;}
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)#endifextern "C" MATHLIBRARY_API void sayHello();
#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 "Hello.h"
int main()
然后配置一下运行的项目。 点击运行,查看结果,会报错: 然后,把这行#include"pch.h"代码删了 然后运行,运行成功。 由于本人不是主修c++的,有问题的,还请提出来,如确实如此,本人乐意接受。
原文链接:https://www.cnblogs.com/nanshaws/p/17898274.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728