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 之間 通訊 的 但是 在 聯絡 ...