Tôi đã được cung cấp một thư viện của bên thứ ba bao bọc mã C++ không được quản lý vào C# api, một trong các hàm có tham số xuất hiện là cấu trúc từ không gian tên chung toàn cục một thể hiện của cấu trúc đó trong C#?Gọi mã C++ với cấu trúc từ C#
Đây là C++ Struct:
struct GroupInfo
{
int cMembers; // Current # of members in the group.
char saMembers[cMaxMembers][cMaxLoginID + 1]; // Members themselves.
};
Khi chúng tôi cố gắng để khai báo một thể hiện của nó trong C# trình biên dịch nói toàn cầu :: GROUPINFO là không có sẵn do mức độ bảo vệ của nó.
C++ chữ ký
int QueryGroup(char* sGroupName,
GroupInfo& gi);
C# chữ ký
VMIManaged.QueryGroup(sbyte*, GroupInfo*)
Tôi có một lớp được gọi là thông tin nhóm
class GroupInfo
{
public int cMembers;
public sbyte[,] saMembers;
}
và khi tôi cố gắng để thực hiện điều đó sử dụng mã này tôi nhận được một không thể chuyển đổi lỗi
GroupInfo gi = new GroupInfo();
unsafe
{
sbyte* grpName;
fixed (byte* p = groupNameBytes)
{
grpName = (sbyte*)p;
}
return vmi.QueryGroup(grpName, gi); // cannot convert from class GroupInfo to GroupInfo*
}
Từ một số đoạn mã bạn đã cung cấp khó hiểu chính xác vấn đề là gì . Bạn có thể cung cấp dòng mã không? – mageos
cảm ơn cho các bình luận mageos tôi đã sửa đổi bài viết với dòng đó là không. – user2379915
Bạn đã thử vmi.QueryGroup (grpName, &gi);? – mageos