C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.68978 の関連記事表示

<< 0 >>
■68978  Re[10]: vb.netからC++の文字列配列引数付DLLの呼び出し
□投稿者/ 774RR -(2013/11/27(Wed) 07:28:24)
    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 側実装はまったく違う。
記事No.68914 のレス /過去ログ117より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -