C#通過PInvoke調(diào)用c++函數(shù)的備忘錄的實(shí)例詳解
目前知道的情況被調(diào)用的C/C++函數(shù)只能是全局函數(shù) 不能調(diào)用類中的成員方法
被調(diào)用的C函數(shù)必須使用extern “C“包含,保證采用的導(dǎo)出函數(shù)名生成規(guī)則和.NET一致
函數(shù)調(diào)用約定通常使用WINAPI也就是__stdcall,.net默認(rèn)也是__stdcall
.net可以和c++同時(shí)用cdecl調(diào)用約定,這樣可以支持可變參數(shù)個(gè)數(shù)
c函數(shù)必須使用__declspec(dllexport)前綴來導(dǎo)出
PInvoke assistant工具可以輔助生成C#和VB的引入聲明,還可以查看常見的常量枚舉
能否調(diào)用重載的c++函數(shù)導(dǎo)出還沒有試驗(yàn),目前找到的信息看還是不行
字符串只支持C里的char* w_char* 不支持stl的string
各種指針句柄都可以使用C#的IntPtr UIntPtr來對應(yīng)
向非托管的C傳遞字符串如果是通過變量 可以用Marshal.StringToHGlobalAuto(csstr)得到復(fù)制到非托管內(nèi)存的字符串IntPtr句柄,然后可以IntPtr.ToInt32()或者IntPtr.ToInt64()方法轉(zhuǎn)成int傳遞給PInvok方式聲明的C函數(shù)調(diào)用。這個(gè)字符串的非托管副本用完之后記得在C#使用Marshal.FreeHGlobal(cstrAddr)來釋放掉。
實(shí)例參考:
C#托管內(nèi)存與非托管內(nèi)存之間的轉(zhuǎn)換的實(shí)例講解
https://www.jb51.net/article/168504.htm
C#與C++與互操作實(shí)例講解
https://www.jb51.net/article/168506.htm
欄 目:C#教程
下一篇:C#中標(biāo)準(zhǔn)的IDispose模式代碼詳解
本文標(biāo)題:C#通過PInvoke調(diào)用c++函數(shù)的備忘錄的實(shí)例詳解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4653.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的方法
- 01-10C#通過Semaphore類控制線程隊(duì)列的方法
- 01-10C#調(diào)用dos窗口獲取相關(guān)信息的方法
- 01-10同步調(diào)用和異步調(diào)用WebService
- 01-10C#調(diào)用WebService實(shí)例開發(fā)
- 01-10C++調(diào)用C#的DLL程序?qū)崿F(xiàn)方法
- 01-10C#通過正則表達(dá)式實(shí)現(xiàn)提取網(wǎng)頁中的圖片
- 01-10C# 調(diào)用 JavaWebservice服務(wù)遇到的問題匯總
- 01-10基于C#實(shí)現(xiàn)手機(jī)號碼歸屬地接口調(diào)用


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載