【发布时间】:2023-04-02 02:50:01
【问题描述】:
我有非托管 C# DLL:
[DllExport(ExportName = "GetStudentsList", CallingConvention = CallingConvention.StdCall)]
static public List<StudentsStruct>GetStudentsList() { return List<StudentsStruct>; }
[DllExport(ExportName = "maxElement", CallingConvention = CallingConvention.StdCall)]
static public int maxElement(int a, int b) { return c; }
我想从函数中返回List<StudentsStruct>。
我想在 C++ 应用程序中运行上述函数:
using GetStudentsListFn = List<StudentsStruct> (__stdcall *) (void);
GetStudentsListFn GetStudentsList = reinterpret_cast<GetStudentsListFn> (GetProcAddress(mod, "GetStudentsList"));
List<StudentsStruct> myList = GetStudentsList();
using MaxElementFn = int(__stdcall *) (int a, int b);
MaxElementFn maxElement = reinterpret_cast<MaxElementFn> (GetProcAddress(mod, "maxElement"));
std::printf("max: %d\n", maxElement(1, 2));
MaxElement( ) 函数运行良好,因为它返回一个 int。但我想将“StudentsStruct”的列表/数组从 C# 返回到 C++。
【问题讨论】:
-
但是为什么,为什么你需要这个?我很好奇……
标签: c# c++ arraylist dll unmanagedexports