使用Visual Studio 2022 创建lib和dll并使用
對于一個經(jīng)常寫javaWeb的人來說,使用Visual Studio似乎沒什么必要,但是對于使用ffi的人來說,使用c或c++編譯器,似乎是必不可少的,下面我將講述如何用Visual Studio 2022 來創(chuàng)建lib和dll,并使用。
靜態(tài)庫的創(chuàng)建并使用
首先打開Visual Studio 2022,點擊創(chuàng)建新項目。
選擇靜態(tài)庫,然后點擊下一步。
點擊創(chuàng)建。
Visual Studio 2022會自動生成以下代碼:
然后打開項目屬性,看一下配置是不是對的,一般來說都是對的。
看看是不是lib。
接下來就是寫代碼生成lib并測試一下:
1. 編寫代碼:
比如說,我就想編寫一個輸出hello World的代碼,那該如何編寫呢?
首先在頭文件中,創(chuàng)建一個hello.h的文件
然后在頭文件中,定義一個sayHello的方法。
#include<stdio.h>
void sayHello();
然后Hellolib.cpp在重寫這個方法。
// Hellolib.cpp : 定義靜態(tài)庫的函數(shù)。
//
#include "pch.h"
#include "framework.h"
#include "hello.h"
// TODO: 這是一個庫函數(shù)示例
void sayHello()
{
printf("Hello World");
}
- Visual Studio自動生成lib
右鍵點擊這個Hellolib
點擊生成,就行了。
生成成功:
3.如何使用:
先說一下,生成的lib的位置,就是在上一級的x64的debug文件夾里面。
在這里面新建一個空項目,用于測試lib的,我這里叫它testHello
在testHello里面新建兩個文件夾,一個叫include,用來放.h的頭文件的,一個叫l(wèi)ib,用來放lib包的。
將我們生成的那個lib放進(jìn)去,還有之前定義的.h文件也放到include文件里面。
然后右擊testHello,打開屬性。
然后開始調(diào)整:
配置lib
一般來說,不創(chuàng)建源文件,它不會有c/c++編譯器,那個選項
然后創(chuàng)建一個test.cpp的源文件。
創(chuàng)建源文件后,在設(shè)置一下。
配置include文件
我再說一遍,一定要先創(chuàng)建源文件,不然是沒有c/c++的那個選項的。
然后編寫相應(yīng)的代碼。
看這個時候,就已經(jīng)出來了:
編寫測試代碼:
#include "hello.h"
int main() {
sayHello();
return 0;
}
然后點擊運行,就會報錯。
這個錯誤是因為在啟動項目的時候,默認(rèn)運行上一個項目了,我們將它改一下,就行了。
右擊解決方案,點擊屬性。
把啟動項目改一下,改成你要運行的那個項目就行了。
運行結(jié)果:
動態(tài)庫的創(chuàng)建并使用
然后就是搞dll文件,新建一個Hellodll項目。
初始化,頁面長這樣。
創(chuàng)建頭文件
#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();
一樣的步驟創(chuàng)建cpp實現(xiàn)
點擊HelloDll項目,右擊生成。
運行結(jié)果:
查看生成dll的文件
在這里面新建一個項目 testDll
然后一樣的處理,在testDll里面建立一個include文件夾和lib文件夾,include文件夾里面放頭文件,lib文件夾里面放dll和lib
和
然后設(shè)置一下include屬性
然后設(shè)置一下dll和lib
和
然后編寫代碼:
#include "Hello.h"
int main()
{
sayHello();
return 0;
}
然后配置一下運行的項目。
點擊運行,查看結(jié)果,會報錯:
然后,把這行#include"pch.h"代碼刪了
然后運行,運行成功。
由于本人不是主修c++的,有問題的,還請?zhí)岢鰜恚绱_實如此,本人樂意接受。
總結(jié)
以上是生活随笔為你收集整理的使用Visual Studio 2022 创建lib和dll并使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 训练一个目标检测模型
- 下一篇: 造字程序使用方法(实例说明)