我有包含结构的 C++ 代码,我需要将它传递给 C#:
包装器.h
#pragma once
typedef struct
{
int int1;
int int2;
} MY_STRUCT;
MY_STRUCT mystruct;
extern "C" __declspec(dllexport) int __stdcall GetTestStruct(MY_STRUCT* cs_struct);
包装器.cpp:
int __stdcall GetTestStruct(MY_STRUCT* cs_struct)
{
mystruct.int1 = 23;
mystruct.int2 = 45;
cs_struct = &mystruct;
return 0;
}
包装器.cs:
class Program
{
[StructLayout(LayoutKind.Sequential)]
public struct MY_STRUCT
{
public int int1;
public int int2;
}
[DllImport(VpxMctlPath)]
public static extern int GetTestStruct(ref MY_STRUCT mystruct);
static void Main(string[] args)
{
var s = new MY_STRUCT();
GetTestStruct(ref s);
}
}
运行此代码后,s 的 int1 和 int2 仍然为零。我试图将 C# 结构字段设置为私有和公共,但没有区别。我查看了 C++/CLI,但这对于这个小任务来说似乎有些过分了。有没有简单的方法可以做到这一点?
MMTTMM
相关分类