私は通常 C# を使用しますが、C++ 経由で C メソッドを呼び出すことができます。そこで、次のような C++ ラッパーを作成しました。
C++ ヘッダー ファイルは次のようになります。
#pragma once
using namespace System;
namespace CSharpToCPP {
public ref class SomeWrapper
{
public:
double ReturnValue();
};
}
C++ コードは次のようになります。
double CSharpToCPP::SomeWrapper::ReturnValue()
{
return 1;
}
これにより、C# で参照できる dll が得られます。C# での作業コードは次のようになります。
class Program
{
static void Main(string[] args)
{
SomeWrapper Wrapper = new SomeWrapper();
Console.WriteLine(Wrapper.ReturnValue());
}
}
ここで、C++ メソッド ReturnValue でいくつかのデータを作成し、この署名で C メソッドを呼び出したいと思います。
real_T get_value(const e_struct_T parameters, real_T temp)
const e_struct_T とは何か、そのようなデータを作成する方法を説明する正しい方向に私を向けてください。C コードは自動的に生成されたもので、既知の内容の構造体を使用する必要があります。次のようにヘッダーファイルで構造を定義しようとしました:
struct Parameters{
double x;
int y;
char z1;
bool z2;
};
次に、次のようなデータを入力します。
Parameters Ps;
Ps.x = z2;
Ps.x = 2.0;
次のように get_value を呼び出す前に:
get_value(Ps, 10.0);
これは動作しません。ありがとう!