「トップページ/CPPCLI/LEGACY」の編集履歴(バックアップ)一覧はこちら

トップページ/CPPCLI/LEGACY - (2007/10/12 (金) 21:45:11) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

|&big(){C/C++への橋渡し}| ---- *C++/CLIからC/C++へ数値を渡す 普通に呼ぶだけです。 ---- *C++/CLIからC/C++へ文字列を渡す // Stringをc_strに変換 System::Runtime::InteropServices::Marshal::StringTOHGlobalAnsi(str...) // !StringTOHGlobalUniを使うと、半角英数字も1文字2バイトで変換されてしまう *C++/CLIからC/C++へ配列を渡す #include "stdafx.h" using namespace System; using namespace System::Runtime::InteropServices; // テスト用の古い関数 #include "stdio.h" extern "C" void testFunc(int* p, int s) { for (int i = 0; i < s; i ++) { printf("No.%d = %d\n", i, p[i]); } } int main(array<System::String ^> ^args) { array<int>^ srcArray = gcnew array<int>{ 1, 2, 3, 4, 5}; // アンマネージメモリの確保 IntPtr pWrkMem = Marshal::AllocHGlobal(sizeof(int)*srcArray->Length); // 確保したメモリに配列をコピー Marshal::Copy(srcArray, 0, pWrkMem, manarr->Length); // テスト関数の呼び出し testFunc( static_cast<int*>(pWrkMem.ToPointer()), srcArray->Length); // アンマネージメモリの開放 Marshal::FreeHGlobal(pWrkMem); return 0; } ----
|&big(){C/C++への橋渡し}| ---- *C++/CLIからC/C++へ数値を渡す 普通に呼ぶだけです。 ---- *C++/CLIからC/C++へ文字列を渡す // Stringをc_strに変換 System::Runtime::InteropServices::Marshal::StringTOHGlobalAnsi(str...) // !StringTOHGlobalUniを使うと、半角英数字も1文字2バイトで変換されてしまう *C++/CLIからC/C++へ配列を渡す #include "stdafx.h" using namespace System; using namespace System::Runtime::InteropServices; // テスト用の古い関数 #include "stdio.h" extern "C" void testFunc(int* p, int s) { for (int i = 0; i < s; i ++) { printf("No.%d = %d\n", i, p[i]); } } int main(array<System::String ^> ^args) { array<int>^ srcArray = gcnew array<int>{ 1, 2, 3, 4, 5}; // アンマネージメモリの確保 IntPtr pWrkMem = Marshal::AllocHGlobal(sizeof(int)*srcArray->Length); // 確保したメモリに配列をコピー Marshal::Copy(srcArray, 0, pWrkMem, manarr->Length); // テスト関数の呼び出し testFunc( static_cast<int*>(pWrkMem.ToPointer()), srcArray->Length); // アンマネージメモリの開放 Marshal::FreeHGlobal(pWrkMem); return 0; } ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: