C#中使用DLL相关问题
C#中使用DLL相關問題
一,C#調(diào)用 C/C++ 庫函數(shù)
1,UNITY的C# VS工程常常打不開 屬性頁,右鍵工程無 【添加引用】項。原因是VS的自帶工具【適用于UNITY的工具】導致的。
解決辦法:VS-【工具】-【選項】-【適用于UNITY的工具】-【雜項】-【訪問項目屬性】改為true,然后重啟VS,?就可以打開項目屬性了
2,C#工程的屬性頁與C++相差很大,它沒有文件目錄的設置項,沒有LIB文件的添加和目錄項,因此,C#工程使用庫文件只有一種方式:添加引用,
且C#只能引用DLL,不能引用LIB
3,添加引用時,C#工程一定要添加引用才能使用DLL,就算你的DLL在工程中任何位置不添加引用也不能用,這很明顯,就像C++工程中不添加LIB及其目錄則不能用一樣
添加引用只是告訴IDE該到哪里去取這個DLL,
4,在代碼中聲明導出函數(shù)【注意導出函數(shù)必須是 static extern的】
[System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint="RtlZeroMemory")]public unsafe static extern bool ZeroMemory(byte* destination, int length);?
關于靜態(tài)鏈接庫和動態(tài)鏈接庫:
靜態(tài)鏈接庫只有一個.LIB文件,使用時 : 工程中添加.lib并指定lib目錄,代碼中包含.h或只接聲明lib中的函數(shù)名然后使用
動態(tài)鏈接庫可以只生成一個dll而不生成lib,這樣使用時只能使用 系統(tǒng)函數(shù)loadlibary()來加載這個dll,并從中導出想要使用的函數(shù)。
動態(tài)鏈接庫常用的使用方式是生成一個lib和一個dll,使用時 : 工程中添加.lib并指定lib目錄,代碼中包含.h或只接聲明lib中的函數(shù)名然后使用
?二,C#調(diào)用 C# 庫
C#的庫只有動態(tài)鏈接庫DLL,且調(diào)用極為簡單,只需要添加引用,然后在程序中像使用一個源碼類那樣使用它,不需要 DllImport標簽來導入函數(shù),示例如下:
//DLL,創(chuàng)建一個庫工程,添加如下代碼,編譯生成了ClassLibaray1.DLLnamespace ClassLibrary1 {public class Class1{public void Print(string s){Console.WriteLine(">> {0}", s);}} } //工程中添加引用,將ClassLibaray1.dll添加到工程中
//使用ClassLibaray1.DLL
using ClassLibrary1;namespace uselib {public class myclass{static void Main(){var osp = new sp1class();osp.Print("10");Class1 oc1 = new Class1();oc1.Print("ddd");}} }
?
?
另外參考:
1,將CS腳本打成DLL并在UNITY中使用
https://blog.csdn.net/qq_25210959/article/details/53285403
2,將UNITY 的DLL打進自己的DLL中?
https://blog.csdn.net/suifcd/article/details/48248015
posted on 2018-07-27 19:16 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結(jié)
以上是生活随笔為你收集整理的C#中使用DLL相关问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++动态链接库及静态链接库的生成与使用
- 下一篇: 硬中断软中断