主頁 >  其他 > VS 2015用C++專案生成dll并呼叫(2021.3.1)

VS 2015用C++專案生成dll并呼叫(2021.3.1)

2021-03-03 17:39:07 其他

Visual Studio 2015 C++支持的dll生成及呼叫 2021.3.1

  • 1、開發環境
  • 2、DLL介紹
  • 3、C++創建并呼叫自定義dll元件(同一個解決方案下)
    • 3.1 新建C++專案來生成DLL
    • 3.2 新建客戶端C++專案呼叫dll(同一解決方案下)
  • 4、C++專案本地呼叫dll(不同解決方案)
    • 4.1 將 DLL 標頭(.h檔案所在目錄)添加到專案的包含目錄
    • 4.2 將 DLL 匯入庫(.lib檔案所在目錄)添加到專案的庫目錄
    • 4.3 應用所呼叫dll(.dll檔案)的本地部署
      • 4.3.1 手動復制dll
      • 4.3.2 在生成后事件中復制dll
  • 5、C#專案本地呼叫dll
    • 5.1 為C#專案進行dll的本地應用部署(兩種dll檔案復制方式)
      • 5.1.1 方式一:手動復制dll相關檔案
      • 5.1.2 方式二:專案后期生成事件命令列復制

1、開發環境

宇宙第一最強IDEVisual Studio 2015

在這里插入圖片描述

2、DLL介紹

在 Windows 中,元件 (DLL) 是作為函式和資源的共享庫的一種可執行檔案, 動態鏈接是作業系統功能, 它可使執行檔案呼叫函式或使用存盤在單獨檔案中的資源, 可從使用這些函式和資源的可執行檔案中對其分別進行編譯和部署,
DLL 不是獨立的可執行檔案, DLL 在呼叫它們的應用程式的背景關系中運行, 作業系統將 DLL 加載到應用程式的記憶體空間中, 此操作要么在加載應用程式時(隱式鏈接)完成,要么在運行時按需(顯式鏈接)完成 , DLL 還可以在可執行檔案之間輕松共享函式和資源, 多個應用程式可同時訪問記憶體中單個 DLL 副本的內容,
靜態鏈接將靜態庫中的所有物件代碼復制到生成時使用它的可執行檔案中, 動態鏈接僅包括 Windows 在運行時用于查找和加載含有資料項或函式的 DLL 所需的資訊, 創建 DLL 時,還將創建包含此資訊的匯入庫, 生成呼叫 DLL 的可執行檔案時,聯結器會使用匯入庫中的匯出符號來為 Windows 加載程式存盤此資訊, 當加載程式加載 DLL 時,該 DLL 會映射到你的應用程式的記憶體空間中, 如果存在,則呼叫 DLL 中的特殊函式 DllMain,以執行 DLL 所需的任何初始化,
盡管 DLL 和應用程式都是可執行檔案模塊,但它們之間也存在很多不同之處, 對用戶來說,最明顯的區別在于不能直接運行 DLL, 從系統的角度來看,應用程式和 Dll 之間有兩個基本差異:
是應用程式可以在系統中同時運行其自身的多個實體, 而 DLL 只能有一個實體,
是應用程式可以作為行程進行加載, 它可以管理諸如堆疊、執行執行緒、全域記憶體、檔案句柄和訊息佇列之類的資源, 而 DLL 不能管理這些資源,
使用 DLL 的潛在缺點是,應用程式不是自包含的, 它依賴于一個獨立的 DLL 模塊的存在:在安裝程序中必須親自部署或驗證的模塊,

3、C++創建并呼叫自定義dll元件(同一個解決方案下)

3.1 新建C++專案來生成DLL

打開VS2015,選單欄中找到檔案并點擊,彈出新建專案視窗,選擇Visual C++下的Win32專案后再下方輸入專案名稱,瀏覽專案保存位置后點擊確定,
在這里插入圖片描述

在這里插入圖片描述
下面選擇目標平臺為Release和x64,然后在解決方案資源管理器下找到頭檔案,右鍵選擇添加新建項,會彈出添加新項視窗,在添加新項視窗中選擇頭檔案后輸入名稱為Mydll.h并點擊添加即可,
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在打開的Mydll.h檔案中寫入以下代碼:

#pragma once
// 匯出函式,使用“ _stdcall ” 標準呼叫
extern "C" _declspec(dllexport) int Add(int a, int b);
extern "C" _declspec(dllexport) int Minus(int a, int b);
extern "C" _declspec(dllexport) int Multiply(int a, int b);
extern "C" _declspec(dllexport) int Divide(int a, int b);
extern "C" _declspec(dllexport) void SayHello();

接下來需要在解決方案資源管理器下找到源檔案,右鍵選擇添加新建項
在這里插入圖片描述
在這里插入圖片描述
在打開的Mydll.cpp檔案中撰寫自定義函式的實作代碼如下:

#include <iostream>
using namespace std;
#include "Mydll.h"
int Add(int a, int b)
{
	return a + b;
}
int Minus(int a, int b)
{
	return a - b;
}
int Multiply(int a, int b)
{
	return a * b;
}
int Divide(int a, int b)
{
	if(b!=0) return a / b;
	else
	{
		std::cout << "除數為0!" << std::endl;
		return -1;
	}
}
void SayHello()
{
	std::cout << "Hello world!" << std::endl;
}

在這里插入圖片描述
在這里插入圖片描述
Win+E打開系統的檔案資源管理器查看生成的dll檔案,發現在D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\x64\Release檔案夾下生成了6個檔案,包括Mydll.dll、Mydll.exp、Mydll.iobj、Mydll.ipdb、Mydll.lib和Mydll.pdb
在這里插入圖片描述
而新建的Mydll.h頭檔案和Mydll.cpp源檔案則保存到了Mydll專案的Mydll檔案夾下,如下圖所示,
在這里插入圖片描述
到此為止,自定義的dll相關檔案就已經編譯生成(Mydll.cpp為源檔案就不提了),包括頭檔案Mydll.h庫檔案Mydll.libDLL檔案Mydll.dll以及Mydll.expMydll.iobjMydll.ipdbMydll.pdb

3.2 新建客戶端C++專案呼叫dll(同一解決方案下)

首先需要明確上述已經生成了dll檔案,但我們想要呼叫這個dll則只需要關注三個檔案:Mydll.hMydll.libMydll.dll
這里新建一個呼叫dll的C++控制臺專案,與Mydll專案放到了同一個解決方案下,所以直接點擊檔案下的添加,選擇新建專案,
在這里插入圖片描述
在添加新專案視窗中,點擊Visual C++后選擇右側的Win32 控制臺應用程式,輸入專案名稱為TestMydll后點擊確定即可,
在這里插入圖片描述
點擊下一步,選擇空專案后確定
在這里插入圖片描述
在這里插入圖片描述
在解決方案資源管理器下的TestMydll的源檔案上右鍵點擊添加,選擇新建項,
在這里插入圖片描述
在添加新項視窗中,選擇C++檔案(.cpp)后輸入名稱為TestMydll.cpp后點擊添加,
在這里插入圖片描述
首先在TestMydll.cpp中寫入不涉及dll呼叫的C++基本代碼:

#include <iostream>
using namespace std;
int main()
{
	int a = 1, b = 1;
	std::cout << "初始值為a="<<a <<",b="<< b << std::endl;
	system("pause");
	return 0;
}

先在TestMydll專案上右鍵選擇生成,生成后會產生D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll*x64\Release**目錄,
在這里插入圖片描述

在解決方案資源管理器中將TestMydll專案設為啟動專案后就可以后啟動本地除錯,除錯結果如下所示
在這里插入圖片描述
在這里插入圖片描述
除錯成功
在這里插入圖片描述
在這里插入圖片描述
下面為TestMydll客戶端專案設定所呼叫dll的包含目錄和庫目錄,在解決方案資源管理器下的TestMydll專案上右鍵選擇屬性,打開TestMydll專案的屬性頁,在配置屬性的VC++目錄下,將包含目錄設定為Mydll.h所在檔案夾,將庫目錄設定為Mydll.lib所在檔案夾
在這里插入圖片描述
同時在TestMydll屬性頁視窗下的聯結器的輸入中,附加依賴項設定為Mydll.lib
在這里插入圖片描述
然后修改TestMydll.cpp代碼來呼叫Mydll.dll里面的函式,并將Mydll.dll元件檔案復制到D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\x64\Release目錄下即可(因為這里Mydll專案和TestMydll專案在同一個解決方案下,所以Mydll.dll就和TestMydll.exe自動在同一個檔案夾下了),最后在TestMydll專案上右鍵選擇重新生成后啟動本地Windows除錯器即可成功運行,
完整的呼叫dll代碼如下:

#include <iostream>
using namespace std;
#include "Mydll.h"
int main()
{
	int a = 100, b = 20;
	std::cout << "初始值為a=" << a << ",b=" << b << std::endl;
	std::cout << Add(a, b) <<std::endl;
	std::cout << Minus(a, b) << std::endl;
	std::cout << Multiply(a, b) << std::endl;
	std::cout << Divide(a, b) << std::endl;
	SayHello();
	system("pause");
	return 0;
}

在這里插入圖片描述
在這里插入圖片描述
最后專案生成檔案夾下的內容如下:
在這里插入圖片描述

4、C++專案本地呼叫dll(不同解決方案)

部署應用時,還必須部署它使用的 DLL, 若要使你生成的或從第三方加入的 DLL 可用于應用,最簡單的方法就是將其放在應用所在的同一目錄中, 這稱為“應用本地部署” ,在本地部署中,庫檔案以及可執行檔案安裝在應用程式檔案夾中,
用VS 2015新建C++控制臺專案,選擇空專案后確定
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
新建源檔案C++TestMydll.cpp,并撰寫以下代碼,同時選擇Release和x64.

#include <iostream>
using namespace std;
#include "Mydll.h"
int main()
{
	int a = 100, b = 20;
	std::cout << "初始值為a=" << a << ",b=" << b << std::endl;
	std::cout << Add(a, b) <<std::endl;
	std::cout << Minus(a, b) << std::endl;
	std::cout << Multiply(a, b) << std::endl;
	std::cout << Divide(a, b) << std::endl;
	SayHello();
	system("pause");
	return 0;
}

在這里插入圖片描述
可以看到上圖源代碼中頭檔案和函式名稱都標紅,提示找不到,下面進行配置,

4.1 將 DLL 標頭(.h檔案所在目錄)添加到專案的包含目錄

VS的解決方案中找到專案并右鍵選擇屬性,打開專案的屬性頁視窗,找到VC++目錄的包含目錄,將所呼叫dll對應的.h檔案所在目錄(D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\Mydll)復制到這里,
在這里插入圖片描述
在這里插入圖片描述

4.2 將 DLL 匯入庫(.lib檔案所在目錄)添加到專案的庫目錄

VS的解決方案中找到專案并右鍵選擇屬性,打開專案的屬性頁視窗,找到VC++目錄的庫目錄,將所呼叫dll對應的.lib檔案所在目錄(D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\x64\Release)復制到這里,
在這里插入圖片描述
在這里插入圖片描述
同時VS的解決方案中找到專案并右鍵選擇屬性,打開專案的屬性頁視窗,找到聯結器的輸入,右側找到附加依賴項輸入dll對應的.lib檔案的檔案名Mydll.lib
在這里插入圖片描述
這時代碼就不會標紅了,如下圖所示,但如果直接運行會報錯,并提示無法找到Mydll.dll檔案
在這里插入圖片描述
在這里插入圖片描述

4.3 應用所呼叫dll(.dll檔案)的本地部署

一般來說,應用所呼叫dll檔案的本地部署分為手動復制dll在生成后事件中復制dll兩種方式,

4.3.1 手動復制dll

將D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\x64\Release\Mydll.dll檔案復制到D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\C++TestMydll\x64\Release檔案夾下,然后在VS中重新生成并啟動本地除錯器運行即可成功,
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

4.3.2 在生成后事件中復制dll

通過解決方案資源管理器的C++TestMydll專案上右鍵,在配置屬性的常規下可以看到輸出目錄為D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\C++TestMydll\x64\Release
在這里插入圖片描述

S o l u t i o n 、 Solution、 SolutionPlatform、 C o n f i g u r a t i o n 和 Configuration和 ConfigurationOutDir等宏變數都表示特定的檔案目錄,
在這里插入圖片描述
首先洗掉D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\C++TestMydll\x64\Release檔案夾下的Mydll.dll檔案,然后在專案上右鍵打開屬性頁視窗,找到生成事件->后期生成事件,命令列中輸入以下命令將Mydll.dll檔案在專案運行后期自動復制到專案x64\Release檔案夾下:
在這里插入圖片描述

xcopy /y /d "..\..\Mydll\$(IntDir)Mydll.dll" "$(OutDir)"

在這里插入圖片描述
在這里插入圖片描述
此時啟動本地除錯器即可成功運行,同時可以看到Mydll.dll檔案會被自動復制到C++TestMydll專案的x64\Release檔案夾下
在這里插入圖片描述
在這里插入圖片描述

5、C#專案本地呼叫dll

不像C++專案呼叫自定義dll那樣復雜,C#呼叫自定義dll只需將所有dll相關的生成檔案放到自己的生成檔案夾下同時在代碼中添加dll自定義函式匯入宣告即可,
首先,新建一個C#控制臺應用程式
在這里插入圖片描述
在這里插入圖片描述
現在需要在主函式main內部添加兩行代碼后,解決方案配置選擇Release解決方案平臺選擇x64后,點擊啟動本地除錯器開始運行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("This is a CSharp Console Application!");
            Console.ReadLine();
        }
    }
}

在這里插入圖片描述

在這里插入圖片描述
接下來在代碼中添加dll參考介面,并在代碼的主函式外添加dll自定義函式匯入宣告,在主函式內部添加函式呼叫代碼,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;//添加dll參考介面

namespace CSharpConsoleApplication
{
    class Program
    {
        //添加dll自定義函式匯入宣告
        [DllImport("Mydll.dll", EntryPoint = "Add")]
        static extern int Add(int a, int b);

        [DllImport("Mydll.dll", EntryPoint = "Minus")]
        static extern int Minus(int a, int b);

        [DllImport("Mydll.dll", EntryPoint = "Multiply")]
        static extern int Multiply(int a, int b);

        [DllImport("Mydll.dll", EntryPoint = "Divide")]
        static extern int Divide(int a, int b);

        [DllImport("Mydll.dll", EntryPoint = "SayHello")]
        static extern void SayHello();

        static void Main(string[] args)
        {
            int a = 50, b = 5;
            Console.WriteLine("This is a CSharp Console Application!");
            Console.WriteLine(Add(a, b));
            Console.WriteLine(Minus(a, b));
            Console.WriteLine(Multiply(a, b));
            Console.WriteLine(Divide(a, b));
            SayHello();//添加函式呼叫代碼
            Console.ReadLine();
        }
    }
}

在這里插入圖片描述
在這里插入圖片描述
這時如果直接啟動本地除錯器開始運行,結果不會成功,因為Mydll.dll相關檔案還沒有對CSharpApplication專案進行本地部署,會如上圖所示報錯,提示無法加載Mydll.dll檔案,

5.1 為C#專案進行dll的本地應用部署(兩種dll檔案復制方式)

為C#專案部署本地應用的dll相關檔案只涉及到Mydll.dll、Mydll.exp、Mydll.iobj、Mydll.ipdb、Mydll.lib和Mydll.pdb六個檔案,

5.1.1 方式一:手動復制dll相關檔案

將D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\x64\Release檔案夾下的上述六個檔案手動復制到D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\CSharpConsoleApplication\CSharpConsoleApplication\bin\x64\Release檔案夾下即可,然后在VS2015中啟動本地除錯器即可成功運行,
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5.1.2 方式二:專案后期生成事件命令列復制

首先保證D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\CSharpConsoleApplication\CSharpConsoleApplication\bin\x64\Release檔案夾下沒有Mydll.dll相關的檔案即可
在這里插入圖片描述
在這里插入圖片描述
將C++專案自定義生成檔案夾下dll相關檔案復制到C#專案生成檔案夾下的命令列代碼,需要在CSharpApplication專案上右鍵->屬性打開相關設定視窗,找到生成事件,在生成事件的后期生成事件命令列中輸入如下代碼后啟動本地除錯器即可成功運行,

xcopy /y /d "D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\Mydll\x64\Release\*.*" "D:\Program Files (x86)\Microsoft Visual Studio 2015\myprojects\CSharpConsoleApplication\CSharpConsoleApplication\bin\x64\Release\"

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265506.html

標籤:其他

上一篇:IT學習資源——倪靈版

下一篇:DeepStream5.0系列之車牌識別

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more