C# 如何传输c++;从dll到c程序的结构? 我有DLL,用C++编写。此DLL中没有结构 typedef struct TransmitData { wchar_t szPath[MAX_PATH]; DWORD dwResult; } *lpTransmitData;

C# 如何传输c++;从dll到c程序的结构? 我有DLL,用C++编写。此DLL中没有结构 typedef struct TransmitData { wchar_t szPath[MAX_PATH]; DWORD dwResult; } *lpTransmitData;,c#,c++,dll,marshalling,C#,C++,Dll,Marshalling,我有一个函数来填充这个结构 extern "C" __declspec(dllexport) int GetData(struct TransmitData &data) { //I HAVE ONE THE SAME STRUCT IN THIS DLL memcpy(&data, &transmitData, sizeof(struct TransmitData)); return ret_value; } 在C#程序中,我很好地使用了具有简单数据类型的函数,但对于

我有一个函数来填充这个结构

extern "C" __declspec(dllexport) int GetData(struct TransmitData &data)
{
//I HAVE ONE THE SAME STRUCT IN THIS DLL
memcpy(&data, &transmitData, sizeof(struct TransmitData));
return ret_value;
}
在C#程序中,我很好地使用了具有简单数据类型的函数,但对于结构来说,它不起作用。C#上有代码:

我做错了什么?
谢谢

我建议你更换

[DllImport("MyDLL")]

此外,正如乔所建议的,添加

[StructLayout(LayoutKind.Sequential)]

在用C#代码声明结构之前

不要忘记设置“它不工作”这是什么意思?不编译吗?例外?什么是错误/异常消息?从“尝试”之类的单词开始的答案不应该是答案,而是抱歉,这是错误打印(ExtEngultC),但是只有在这里,在代码中所有OK)和其他函数的工作是正确的,比如int函数(…)……@ Lex,你应该考虑使用Delphi导出函数的<代码>这种情况最常见。这与答案非常相似,即匹配调用约定,但您需要在C/C++文件中修复它。
[DllImport("MyDLL", CallingConvention = CallingConvention.Cdecl)]
extert "C"
extern "C"
[StructLayout(LayoutKind.Sequential)]