程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 跨越語言的障礙:C++調用C# DLL

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

編輯:C++入門知識

 博客園前一陣子掀起了語言的廣泛討論,事實上語言的爭執在整個程序員圈子也沒有停止過。以我個人看法,語言只是工具,當你需要寫底層,你可以使用C++,當你需要寫炫目的桌面應用可以使用C# WPF,當你需要大型網站web開發時,可以選擇JAVA。當然還有其他很多語言。這個只是面臨不同項目的選擇而已,每種語言都有其擅長的舞台,而萬年不變的是數據結構和算法。一家之言,輕噴。下面正題:        跨越語言的障礙:C++調用C# DLL     當C#項目需要引用C++dll的時候可以直接使用DLLIMPORT來進行調用。而反向的話,C++項目並不能簡單靠引用來使用C#DLL。因為C++項目默認配置是沒有公共語言運行庫支持的。所以我們需要更改一些配置來進行對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             代碼中需要使用#using和using namespace來進行對dll的調用。當分配內存時注意使用gcnew,需要gc來給其分配內存。托管對象需要使用^來進行聲明。        復制代碼 #include "stdafx.h"   #using "Csharp.dll"   using namespace Csharp;   int _tmain(int argc, _TCHAR* argv[]) {     Class1 ^a = gcnew Class1();     printf("%s/n", a->Name);          return 0; }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved