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

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

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

No.68937 の関連記事表示

<< 0 >>
■68937  Re[3]: vb.netからC++の文字列配列引数付DLLの呼び出し
□投稿者/ Jitta -(2013/11/25(Mon) 22:41:14)
>
    No68916 (unagi さん) に返信

     質問内容を整理してください。

    VB から、VC++2008 で作成された DLL を呼び出す。
    VC++2008 での宣言は、次の通り。
      int dllfunc(int intDataNum, char * strInputDts[], char * OutputDts[])

    …ここまでは分かりました。次の部分は、なんでしょう?

    > int dllfunc_new(int intDataNum, array<string^>^ strNewInputDts, array<string^>^ OutputDts)
    > {
    >  // DLL関数入力文字列配列 --> DLL関数引数
    >
    >  // 旧DLL関数の呼び出し
    > dllfunc(intDataNum, strInputDts, OutputDts)
    >
    >  // DLL関数出力文字列配列 --> 呼び出し関数引数
    > }

    これは、「やってみようとしていること」でしょうか。それとも、「やってみたこと」でしょうか。
    そのあたりが分かりません。なぜ「.NET 対応の C++/CLI」が出てくるのでしょう?
    色々調べたのはわかります。それを、

    > やり方は色々あると思うのですが、C++のマネージ拡張機能を使用すればできるというのを聞いた

    で、済ませないでください。
    これでは、どんな情報を得て、それをどのように考えて、
    「C++ マネージ拡張機能を使おう」という結論にいたったのかわかりません。
    もちろん、「私が聞いていることにだけ答えてくれれば良いのだ」とおっしゃる方は、大勢います。
    ただ、余計な苦労をしているようです。
    苦労したい、というのを止めはしませんが、それで良いですか?

    なお、「string」は文字列です。
    array<string> とすると、「文字列配列」になります。
    そして、.NET Framework では、UNICODE です。
    「char*」は、文字へのポインターです。
    そして、ANSI コードです。
    変換できません。


    VB は分からないけど、C# なら、こうかな。

    [DllImport("dll の名前", CharSet = CharSet.Ansi, SetLastError = true)]
    static extern int dllfunc(int intDataNum, string strInputDts, StringBuilder OutputDts);

    で、VC++2008 のプロジェクトが、C++/CLI で作られているなら、
    なんの苦労もなく、DLL を参照するだけでいいはず。
記事No.68914 のレス /過去ログ117より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -