c 與c 之間的互動

2021-07-04 06:06:14 字數 1301 閱讀 1929

c++的**是非託管的.而.net是託管的.   那麼c++和.net之間互相呼叫或者傳送資料的時候.就需要   封送資料到非託管**  或者  到託管**.

而且他們之間的型別也是不相容的.

如c#裡面的string型別,c++是沒有的.所以  如果像傳 int ,double一般不會有問題.但是string 傳值   最好用intptr .   指標型別互相傳值一般出狀況的時候少

c# 的  string  給c++    string型別可以轉成intptr   然後c++方面用wachar_t*來接.   或者c#方  把string  加上 marshalas特性.然後c++方面用wchar_t接

也可以string到 lcpstr

c#的結構體  加 structlayout特性 可以  與c++ 方  同樣定義的結構體型別傳遞.

c#的數字 c++ 用指標接.

c++傳字串給c#   是wchar_t*  到   intptr.

c++傳結構體到c#   也是  兩邊需要有同樣的   結構體的定義.  然後字串的地方用指標.

c#內  intptr  與  各種型別的轉換  使用   using system.runtime.interopservices命名空間下的  marshal和marshalas等

example:

c#[structlayout(layoutkind.sequential, charset = charset.unicode)]

public struct stbasedata

c++struct stelembasedata

;ex2:

c#傳陣列  需要把 陣列轉成intptr,然後傳給c++之後,c++ 以指標來接. (實際上就是陣列的首位址)

列舉可以直接傳.也可以轉成int傳遞.

list>   這樣的結構傳遞,要把string    vectorlist>  都封裝成結構體後再傳遞.

類似[structlayout(layoutkind.sequential, charset = charset.unicode)]

struct zio_queryresulttablecell

;[structlayout(layoutkind.sequential, charset = charset.unicode)]

struct zio_queryresulttablerow

;[structlayout(layoutkind.sequential, charset = charset.unicode)]

struct zio_queryresulttable

;

c 程式與txt之間的互動

與txt之間建立聯絡 include include include using namespace std int main openfile abcdefg openfile.close system pause return0 程式執行結果,目錄要找好。從txt中逐行讀取內容 include ...

mysql CAPI與C 的互動

首先要保證mysql的服務是開啟的才能進行對資料庫的操作。mysql與c 互動有兩個非常好的三方庫乙個是mysql 乙個是connector c 這兩個庫我嘗試了mysql 不過我發現在中國mysql 的很多資料缺乏,很多都是講了一半剩下的就沒了,除非去看英文文件,可惜我英文不算好,所以我果斷先放棄...

C 與SAP 的互動

最近 做乙個專案 是 把 系統內部資料 上傳到 sap 中,由於 沒接觸 過 sap 對於 sap 還是 很陌生,在 問了 很多人 以及 查詢質料 終於 在 上周五 完成了 這個 模組,下面 說一下 具體的 步驟。最開始 以為 c 與 sap 是 websevice 之間 通訊 的 但是 在 聯絡 ...