在C+中定义的以下结构的C#等价物是什么+; 我在C++中使用的定义了我的项目中的一个结构,它将被重新用于统一引擎的C脚本中的另一个项目。我希望将这些结构类型用作dll中C#脚本和C函数之间的参数类型,但我不知道如何将它们转换为C#声明
以下是结构定义:在C+中定义的以下结构的C#等价物是什么+; 我在C++中使用的定义了我的项目中的一个结构,它将被重新用于统一引擎的C脚本中的另一个项目。我希望将这些结构类型用作dll中C#脚本和C函数之间的参数类型,但我不知道如何将它们转换为C#声明,c#,c++,dll,struct,C#,C++,Dll,Struct,以下是结构定义: struct SMove { std::string m_MotionID; std::string m_AnimSrc; float m_StartFrame; float m_EndFrame; // features enum XFEATURE { XFEATURE_NONE = 0, // Insert new features XFEATURE_ENERGY,
struct SMove
{
std::string m_MotionID;
std::string m_AnimSrc;
float m_StartFrame;
float m_EndFrame;
// features
enum XFEATURE
{
XFEATURE_NONE = 0,
// Insert new features
XFEATURE_ENERGY,
XFEATURE_POWERLEVEL,
};
float m_Intensity;
};
struct SElement
{
float m_Start;
float m_End;
};
typedef std::vector<SElement> TElements;
struct SGroup
{
float m_Start;
float m_End;
long m_Level;
TElements m_Elements;
};
typedef std::vector<SGroup> TGroups;
struct SDivision
{
std::string m_PlayerID;
std::string m_DivisionID;
float m_Start;
float m_End;
TGroups m_Groups;
// features
float m_Intensity;
};
typedef std::vector<SDivision> TDivisions;
typedef std::vector<long*> TScript;
struct SScriptList
{
TScript* m_Seg[9][4][2];
};
C#等价物是什么?这里最好的做法是使用C++/CLI桥DLL。C++/CLI桥应使用与原始DLL构建相同版本的Visual Studio构建。生成的结果是常规的.NET库。这里最好的做法是使用C++/CLI桥DLL。C++/CLI桥应使用与原始DLL构建相同版本的Visual Studio构建。生成的结果是常规.NET库。您想要什么?您想要结构的C#等价物,即有效的C#代码吗?或者,你希望有一个有效的C或C++代码,可以用p/Unjk在C语言中使用。这是两件完全不同的事情!我想使用这些结构作为从Unity C#脚本的C DLL插件导入的函数的参数。我想这意味着我需要在脚本中使用有效的C#代码,在DLL项目中使用等效的C结构,但我不太确定……如果在结构中使用STL容器,则没有简单的方法将它们封送到C#代码。您可能希望用c数组替换它们。是的,我知道,但是如果我用指向该对象的指针替换std::vector,那么C#等价物是什么?我想维护SDivision的合成关系,它有一个SGroup数组,它有一个SElement数组,也有一个动态数组大小。您应该看看。他们将为您提供许多关于如何访问大多数Win32 API结构的示例。也许在那里你会找到一个与你的问题相当的例子,这样你就可以根据自己的愿望来调整它。你想要什么?您想要结构的C#等价物,即有效的C#代码吗?或者,你希望有一个有效的C或C++代码,可以用p/Unjk在C语言中使用。这是两件完全不同的事情!我想使用这些结构作为从Unity C#脚本的C DLL插件导入的函数的参数。我想这意味着我需要在脚本中使用有效的C#代码,在DLL项目中使用等效的C结构,但我不太确定……如果在结构中使用STL容器,则没有简单的方法将它们封送到C#代码。您可能希望用c数组替换它们。是的,我知道,但是如果我用指向该对象的指针替换std::vector,那么C#等价物是什么?我想维护SDivision的合成关系,它有一个SGroup数组,它有一个SElement数组,也有一个动态数组大小。您应该看看。他们将为您提供许多关于如何访问大多数Win32 API结构的示例。也许在那里你会找到一个与你的问题相当的例子,这样你就可以根据自己的愿望来调整它。
struct SElement
{
float m_Start;
float m_End;
};
struct SGroup
{
float m_Start;
float m_End;
long m_Level;
//Array of Elements
SElement* m_pElements;
int m_numElements;
};
struct SDivision {
const char* m_PlayerID;
const char* m_DivisionID;
float m_Start;
float m_End;
//Array of Groups
SGroup* m_pGroups;
int m_numGroups;
float m_Intensity;
};