Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中定义的以下结构的C#等价物是什么+; 我在C++中使用的定义了我的项目中的一个结构,它将被重新用于统一引擎的C脚本中的另一个项目。我希望将这些结构类型用作dll中C#脚本和C函数之间的参数类型,但我不知道如何将它们转换为C#声明_C#_C++_Dll_Struct - Fatal编程技术网

在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;
};