我通常使用 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);
这不起作用。谢谢!