dll動態鏈接庫【C#】

1說明:

在C#中,dll是添加 【類庫】生成的。

2添加C#的dll:

(1)在VS中新建一個Windows應用程序項目,并命名為TransferDll。
(2)打開Windows窗體設計器,從工具箱中為窗體添加相應的控件。
(3)在該應用程序的“解決方案資源管理”中的“引用”文件上單擊鼠標右鍵,
在下拉列表中選擇“添加引用”項,在彈出的“添加引用”對話框中選擇“瀏覽”選項卡,
在該選項卡中選擇AccountDll類庫的DLL文件(示例36_02中的AccountDll.dll文件),
單擊“確定”按鈕。完成動態鏈接庫的添加。
(4)在主窗體的加載事件中調用AccountDll類庫的formShow方法,完成登錄窗體的調用。代碼如下:

?AccountDll.Account.public void?formShow(string?TName,?out int?n,?out?string?u)?

"命名空間【AccountDll】對象class【Account】"
AccountDll.Account EncapClass = new AccountDll.Account();    //實例化動態鏈接庫AccountDllprivate void Form1_Load(object sender, EventArgs e)
{int n = 0;                                        //定義變量,用于記錄是否登錄成功string u = "";                                    //定義變量,用于記錄登錄的用戶名//在動態鏈接庫中記當數據庫的連接字符串"class內,靜態變量"AccountDll.Account.M_str_sqlcon = "Data Source=.;Database=db_36;User id=sa;PWD=";EncapClass.formShow("tb_Logon", out n, out u);        //調用登錄窗體if (n == 0)                                        //如果登錄失敗{Close();                                    //關閉主窗體}else{statusStrip1.Items[2].Text = u;                    //顯示當前登錄的用戶名}
}

【TName】登錄表的名稱;【n】登錄成功標識;【u】登錄成功的用戶名。

3添加非C#的dll:

在程序開發過程,有時會使用C#調用其他編程語言開發的DLL或調用Windows系統API函數,
由于這些DLL都屬于非托管動態鏈接庫(DLL),要調用非托管動態鏈接庫(DLL)則需要使用DllImport屬性。DllImport屬性指示該屬性化方法由非托管動態鏈接庫(DLL)作為靜態入口點公開,
并提供對從非托管DLL導出的函數進行調用所必需的信息。
作為最低要求,必須提供包含入口點的DLL的名稱。在使用DllImport屬性前,須引用命名空間System.Runtime.InteropServices。下面的示例說明如何使用DllImport屬性調用非托管的DLL。代碼如下:
[DllImport("KERNEL32.DLL", EntryPoint = "MoveFileW", SetLastError = True,
CharSet = CharSet.Unicode, ExactSpelling = True,
CallingConvention = CallingConvention.StdCall)]public static extern bool MoveFile(String src, String dst);
CallingConvention    指示入口點的調用約定
CharSet           指示如何向方法封送字符串參數,并控制名稱重整
EntryPoint      指示要調用的DLL入口點的名稱或序號
PreserveSig     指示簽名是否為非托管入口點的直接轉換
SetLastError    指示被調用方在從屬性化方法返回之前是否調用 SetLastError Win32 API 函數

案例:

using System.Runtime.InteropServices;
namespace DelphiDll
{public partial class Form1 : Form{public class cCdll{[DllImport("projectdll.dll", EntryPoint = "Sum", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]public static extern double Sum(double x, double y);}public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){textBox3.Text = cCdll.Sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)).ToString();}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207962.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207962.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity 性能優化的手段【更新中】

目錄 對象池 減少Draw Calls 批處理 合并網格 貼圖集 LOD 基本原理 應用 優點 挑戰 LightMap 基本概念 如何工作 優點 缺點 對象池 使用對象池:頻繁地創建和銷毀對象會導致性能下降和內存碎片化。對象池可以預先創建一些對象,然后在需要時…

【數據開發】Hive 多表join中的條件過濾與指定分區

1、條件過濾 left join 中 on 后面加條件 where 和 and 的區別 1、 on條件是在生成臨時表時使用的條件,它不管and中的條件是否為真,都會保留左邊表中的全部記錄。2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有le…

Gemini:新一代AI產品的驚人功能和革命性影響

目錄 1 前言2 視頻分析與交互能力3 策劃推理能力4 教育領域的應用能力5 科學領域的論文解讀能力6 結語 1 前言 Google最新推出的AI產品Gemini引發了廣泛關注,其30分鐘的介紹和演示視頻展示了令人驚艷的功能。Gemini以其驚人的藝術創作能力脫穎而出,通過…

TCP一對一聊天

客戶端 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io…

python-04(入門基礎篇4——lists相關的部分語法)

python-04(入門基礎篇4——lists相關的部分語法) 1. 前言1.1 python入門1.2 參考官網 2. 關于索引和切片3. 在列表追加元素3.1 支持拼接3.2 使用list.append() 方法在列表末尾添加新項 4. 列表是可變類型4.1 更改其中某元素內容4.2 使用切片更改列表大小…

cesium學習記錄

有段時間自學了cesium,這里記錄一下自學過程,希望在所需之時查閱~~ 1、cesium源碼獲取與Index頁面介紹 官網網址 www.cesiumjs.org 源代碼下載:Platform-Dowmloads 在index.html右擊open with Live server開啟本地服務 點擊Documentation…

mysql 表分區類型

在MySQL中,有幾種不同類型的分區可以用于對表進行分區。以下是MySQL中常用的分區類型: 1. RANGE分區:基于給定的列范圍進行分區。例如,可以按照日期范圍或數值范圍對表進行分區。 CREATE TABLE sales (id INT NOT NULL AUTO_INC…

VMware安裝OpenEuler(安裝界面)

本文中使用的OpenEuler版本:22.03 LTS SP2 VMware:17.0.0 一、下載鏡像 根據CPU和場景,按需下載 https://www.openeuler.org/zh/download/?versionopenEuler%2022.03%20LTS%20SP2 二、初始化VmWare 三、配置操作系統 四、安裝操作系統 …

Nginx漏洞修復

1、漏洞 去掉在請求響應頭中存在的信息 Server: nginx X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1;modeblock 修復方法 在Nginx的配置文件中的 server 標簽內增加一下配置 server_tokens off; add_header X-Frame-Options SAMEORIGIN; …

Python繪制幾種常見的時序分析圖

時間序列數據是一種按照時間順序排列的觀測值集合,每個觀測值對應于一個特定的時間點。這種數據在許多領域中都具有重要的應用價值,如金融、經濟、氣候科學等。通過分析時間序列數據,可以幫助我們掌握潛在的模式、發現趨勢和季節性波動等重要…

【力扣】160.相交鏈表

160.相交鏈表 這個題目因為我之前在學指針的時候沒學好,所以總感覺有一種畏難,我害怕。但是當真正的開始學習之后,發現現在的腦袋還是能用的,所以不要放棄,你可以的! 題解: 總的來說還是挺簡…

CSGO游戲盲盒開箱源碼 盲盒對戰、幸運開箱、積分商城、Fl盲盒

源碼介紹: CSGO游戲盲盒開箱源碼 盲盒對戰、幸運開箱、積分商城、Fl盲盒。這個是一個新花樣玩法的盲盒程序。 僅供學習,請勿商用!請購買正版程序運營。 代碼下載:百度網盤

2、Linux_遠程操作

遠程操作 1.配置ifconfig 1.1輸入 ifconfig 查看 ip 的命令( ifconfig ) 1.2搜索 ifconfig 命令(yum search ifconfig) 1.3配置網卡 進入如下目錄配置網卡 cd /etc/syscofig/network-scripts編輯 ifcfg-ens33 vi ifcfg-ens33按 i 鍵進入編輯模式 按 …

Java第二十一章

一.網絡程序設計基礎 1.網絡協議 網絡協議規定了計算機之間連接的物理、機械(網線與網卡的連接規定)、電氣(有效的電平范圍)等特征,計算機之間的相互尋址規則,數據發送沖突的解決方式,長數據如何分段傳送與接收等內容.就像不同的國家有不同的…

邏輯漏洞與越權

邏輯漏洞與越權 越權 如果使用A用戶的權限去操作B用戶的數據,A的權限小于B的權限,如果能夠成功操作,則稱之為越權操作。 越權漏洞形成的原因是后臺使用了 不合理的權限校驗規則導致的。 一般越權漏洞容易出現在權限頁面(需要登…

掌握VUE中localStorage的使用

文章目錄 🍁localStorage的使用🌿設置數據🌿獲取數據🌿更新數據🌿刪除數據 🍁代碼示例🍁使用場景🍁總結 localStorage是一種Web瀏覽器提供的本地存儲機制,允許開發者在用…

java中ReentrantLock的實現原理是什么?

ReentrantLock 的實現原理主要涉及到兩個關鍵概念:同步器(Sync)和 AQS(AbstractQueuedSynchronizer,抽象隊列同步器)。 ReentrantLock 使用 AQS 來實現可重入鎖的機制。AQS 是 Java 并發包中的一個抽象基類…

周星馳 互聯網3.0 團隊下個月將上線獨立 App

2023年12月7日,新浪科技報道指出,周星馳旗下的互聯網3.0團隊透露,Moonbox,這家周星馳創立的互聯網3.0初創公司,計劃在明年1月份完成Moonbox App的上線,屆時該應用將免費向用戶提供服務。 目前,…

C現代方法(第25章)筆記——國際化特性

文章目錄 第25章 國際化特性25.1 <locale.h>: 本地化25.1.1 類項25.1.2 setlocale函數25.1.3 localeconv函數 25.2 多字節字符和寬字符25.2.1 多字節字符25.2.2 寬字符25.2.3 Unicode和通用字符集25.2.4 Unicode編碼25.2.5 多字節/寬字符轉換函數25.2.6 多字節/寬字符串轉…

Academic accumulation|行政管理方向的文章

一、評西方的“新公共管理”范式 文獻來源&#xff1a;[1]陳振明.評西方的“新公共管理”范式[J].中國社會科學,2000(06):73-82207. 下載鏈接&#xff1a;https://pan.baidu.com/s/1M1jDT-5tsJ0ES46j4pb7Cg 提取碼&#xff1a;mj54 在當代西方政府改革浪潮的沖擊下 ,世紀之交的…