国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

跨越語言的障礙:C++/CLI 調用 C#

2019-11-17 03:10:03
字體:
來源:轉載
供稿:網友

跨越語言的障礙:C++/CLI 調用 C#

  首先我想投訴一下博客園首頁右邊欄的廣告..最近總是出現很恐怖的整容臉的廣告。真的是嚇壞了。=。=大家有同感嗎?  

  博客園前一陣子掀起了語言的廣泛討論,事實上語言的爭執在整個程序員圈子也沒有停止過。以我個人看法,語言只是工具,當你需要寫底層,你可以使用C++,當你需要寫炫目的桌面應用可以使用C# WPF,當你需要大型網站web開發時,可以選擇java。當然還有其他很多語言。這個只是面臨不同項目的選擇而已,每種語言都有其擅長的舞臺,而萬年不變的是數據結構和算法。一家之言,輕噴。下面正題:

  [小九的學堂,致力于以平凡的語言描述不平凡的技術。如要轉載,請注明來源:小九的學堂。VEVb.com/xfuture]

  

  

跨越語言的障礙:C++/CLI 調用 C#

  當C#項目需要引用C++dll的時候可以直接使用DLLIMPORT來進行調用。而反向的話,C++項目并不能簡單靠引用來使用C#DLL。因為C++項目默認配置是沒有公共語言運行庫支持的。所以我們需要更改一些配置來進行對C# dll的調用。先用托管C++(CLI)將C#的dll進行一次封裝,然后由非托管C++調用封裝好的dll。其中關鍵步驟c++/cli調用c#dll 步驟如下:

[感謝緣生夢朋友 補充:此樣例僅做開發人員調研使用,c++ clr會和部分c++編譯選項沖突,而且不支持部分mfc外部鏈接源。]

  首先我們完成C# dll開發:

  

namespace Csharp{    public class Class1    {        public string Name = string.Empty;        public Class1()        {            Name = "We can use C#!!";        }    }}

  編譯就可以獲得Csharp的dll。

  其次對C++項目屬性的配置: 添加公共語言運行時支持 /clr (c++/cli)

  

  下一步添加新引用中選擇我們第一步中編譯的Csharp.dll

  代碼中需要使用#usingusing namespace來進行對dll的調用。當分配內存時注意使用gcnew,需要gc來給其分配內存。托管對象需要使用^來進行聲明。

  

#include "stdafx.h"#using "Csharp.dll"using namespace Csharp;int _tmain(int argc, _TCHAR* argv[]){    Class1 ^a = gcnew Class1();    

  運行后結果如下:

  

  如此便可實現C++/CLI 調用 C#dll。

  至此其他項目中非托管C++代碼便可以調用該c++dll來進行對托管c#dll的調用,該dll扮演wrapper的角色。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永川市| 济南市| 深泽县| 大庆市| 河南省| 合肥市| 丰镇市| 辽源市| 甘洛县| 休宁县| 绥宁县| 疏勒县| 东海县| 徐闻县| 特克斯县| 来安县| 江永县| 莒南县| 香格里拉县| 南溪县| 章丘市| 饶阳县| 客服| 仁布县| 如皋市| 邯郸市| 万年县| 庆阳市| 兰考县| 昌黎县| 丰宁| 轮台县| 牡丹江市| 易门县| 平远县| 余庆县| 红安县| 慈利县| 汪清县| 泾源县| 鹤岗市|