@OldBoy

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

c#からstring型の配列をc++に渡し、その配列に文字列を入れc#に返したい

c#からstring型の配列をc++に渡し、その配列に文字列を入れc#に返すというような
プログラムを作成しようとしております。
ソースは下記のような感じです。

【c#】

void cSharp()
{
    String[] Name = new String[5];

    // getName はc++のプログラム
    // 配列Name にはgetNameで文字列が入れられて返ってくるようにしたいです。
    // ret は 成功(0)/失敗(-1)が返ってくるようにする予定です。

    int ret = getName(Name.Length, ref Name);

    ~ あとはNameに入っている文字列を表示する処理 ~

    return;
}

【c++】

int getName(①, int length)
{
    int ret = 0;
    
    ~ ①の引数に "Taro Yamada"、"Jiro Sato" などの文字列が入る処理 ~
    
    return ret;
}

様々検索をしましたが、
・getNameの①にはどのような型の引数にすればよいか
・①に文字列を入れてそれを呼び元のc#の関数CSharp()で取得するにはどうしたらよいか
という疑問に対していまひとつ良い検索結果を得ることが出来ませんでした。

皆様、どうかお知恵を貸してやってくださいませんでしょうか。

宜しくお願いいたします。

0 likes

3Answer

全部 C# で作るべきなのにそうしない理由は何でしょうか? COM相互運用の話ですか? .NET Framework に存在しない Windows システムの API を C# から呼び出したい?

開発環境を書いてください。

0Like

Comments

  1. @OldBoy

    Questioner

    回答ありがとうございます。

    大変失礼いたしました。
    開発環境は、
     ・Windows10
     ・Visual Studio2022
     ・C++のほうはdll化されたプログラム
    です。
    それをC♯から実行してデータを取得しなければならないのです。

  2. では、以下の記事が参考になりませんか?

    Win32 APIやDLL関数を呼び出すには?
    https://atmarkit.itmedia.co.jp/ait/articles/0305/09/news004.html

    他にも、 DllImportAttribute などをキーワードにしてググるといろいろ参考になる記事がヒットすると思いますので、ご自分でも調べてみてください。

  3. @OldBoy

    Questioner

    回答ありがとうございます。
    返信が遅くなり申し訳ありません。
    見させて頂きます。

Comments

  1. @OldBoy

    Questioner

    回答ありがとうございます。
    見させて頂きます。

下記サイトの「文字列のマーシャリング」が参考になりますかね。

↓こちらも。

0Like

Comments

  1. @OldBoy

    Questioner

    回答ありがとうございます。
    見させて頂きます。

Your answer might help someone💌