C 中使用clr 通用語言庫 及相關問題

2022-09-12 17:27:27 字數 1053 閱讀 7112

1.在c++中呼叫c#程式

把c#編譯成dll或者axtive控制項,再由c呼叫 !

比如使用c++呼叫c#的dll

swfdotnet是c#編寫的,作者的c#水平,真是令我佩服。這是個特別好的讀寫swf檔案的庫。但是,我要用在c++專案中,怎麼讓c++呼叫c#的dll呢。今天一上午都在琢磨這個問題,耽誤了很多時間,原因是編譯是出現:

warning c4819: 該檔案包含不能在當前**頁(936)中表示的字元。請將該檔案儲存為 unicode 格式以防止資料丟失。

接著就是一大堆的0x01等等。自己做了個sample,仔細分析發現還是自己沒有搞清楚。正確的操作如下:

1 建立c# dll,需要指定應用型別為「類庫」,**:

namespace cslib

set}}}

2 c++客戶程式,是個控制台應用,**:

#using "..\debug\cslib.dll"

using namespace cslib;

int _tmain(int argc, _tchar* ar**)

3 幾點要記住:

1 使用#using引用c# dll,而不是#include。我就是想當然的使用了後者,所以浪費了一上午的時間;

2 別忘了using namespace cslib;

3 使用c++/clr語法,採用正確的訪問託管物件,即:使用帽子'^',而不是星星'*'。

2.gcnew與new的區別 

c++/cli中使用gcnew關鍵字表示在託管堆上分配記憶體,並且為了與以前的指標區分,用^來替換* ,就語義上來說他們的區別大致如下:

1)gcnew返回的是乙個控制代碼(handle),而new返回的是實際的記憶體位址;

2)gcnew建立的物件由虛擬機器託管,而new建立的物件必須自己來管理和釋放。

當然,從程式設計師的角度來說,管它是控制代碼還是什麼其他的東西,總跑不掉是對某塊記憶體位址的引用,實際上我們都可以理解成指標。

3.在c++(非託管**)中呼叫.net(託管**)問題。

4.怎樣宣告在c++堆中引用clr 物件?

C 中使用windows API,及相關指標

沒有感覺到能寫些對其他人有幫助的東西 羅雲彬的 windows32位彙編那本書敲 敲到第9章了,也是第3遍看了,估計也是再看最後一兩遍了,等都抄一遍之後在看看有些什麼值得寫的吧以前用的乙個東西,能讓沒用過的人省些時間吧 c 呼叫windowsapi時,方法和c 那種取得getprocaddress的...

在C語言程式中使用cURL庫(libcurl)

curl本身就是用c語言寫的,當然可以在c語言中使用。但是理論和實踐還是有一定距離的,以前研究了好幾天才研究出怎樣正確的使用libcurl的c語言api,曾經也分享過,不過重建部落格的時候沒有備份資料庫。再寫一次吧。define curl staticlib 必須在包含curl.h前定義 inclu...

C語言中使用mysql函式庫

要想對資料進行以上這些操作的話,就要了解一些基本的操作函式,下面是這些函式的介紹 和示例。mysql real query 原型 int mysql real query mysql mysql,const char qurey,unsigned int length 功能 執行sql語句。引數 m...