| No68937 で既に指摘済みの話なわけでいまさら感がするわけだが > そして、.NET Framework では、UNICODE です。 > 「char*」は、文字へのポインターです。 > そして、ANSI コードです。 > 変換できません。
C/C++ 側で char を使ってしまうと System.Char (UTF-16) -> char (MBCS/CP932) -> System.Char (UTF-16) の変換が入るので
・ UTF-16 で表記できるが CP932 にない文字は真に文字化けする ・不必要な変換が入るので遅い ということになるわけで、お勧めぢゃない。
No68914 > int dllfunc(int intDataNum, char * strInputDts[], char * OutputDts[]) この関数原型宣言を見た時点で俺や Azulean 氏は以下のような感想をいだくわけだ。
・文字列バッファ長を指定する何かがないのでバッファオーバーフロー脆弱性を含んでいる。 No68938 > C++ 同士であればこのように使うというサンプルが見えないと、具体的なコードの提示は難しいと思います。 というのは OutputDts の使い方がわからない、って意味。
実装例1: for (i=0; i<intDataNum; ++i) { strcpy(OutputDts[i], strInputDts[i]); }
実装例2: for (i=0; i<intDataNum; ++i) { OutputDts[i]=strdup(strInputDts[i])); } どっちかで .NET 側実装はまったく違う。
|