Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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++类。 < C++ >我的.h文件是这样的: struct XMFloat3 { public: float x; float y; float z; XMFloat3(){} XMFloat3(float _x, float _y,float _z) { x = _x; y = _y; z = _z; } }; class Car { public: XMFloat3 m_position; char* m_name; int m_model; double m_price; void setPosition(XMFloat3); void setName(char* ); void setModel(int); void setPrice(double); XMFloat3 getPosition() { return m_position; } char* getName() { return m_name; } int getModel() { return m_model; } double getPrice() { return m_price; } void SetInformation(XMFloat3 position,char* name, int model,double price); ~Car(void); static Car* getInstance(); private: Car(void){ } Car(XMFloat3 position,char* name,int model,double price){ } static Car* instance; };_C#_C++ - Fatal编程技术网

原生C++;到C# 我想在C++中使用C++类。 < C++ >我的.h文件是这样的: struct XMFloat3 { public: float x; float y; float z; XMFloat3(){} XMFloat3(float _x, float _y,float _z) { x = _x; y = _y; z = _z; } }; class Car { public: XMFloat3 m_position; char* m_name; int m_model; double m_price; void setPosition(XMFloat3); void setName(char* ); void setModel(int); void setPrice(double); XMFloat3 getPosition() { return m_position; } char* getName() { return m_name; } int getModel() { return m_model; } double getPrice() { return m_price; } void SetInformation(XMFloat3 position,char* name, int model,double price); ~Car(void); static Car* getInstance(); private: Car(void){ } Car(XMFloat3 position,char* name,int model,double price){ } static Car* instance; };

原生C++;到C# 我想在C++中使用C++类。 < C++ >我的.h文件是这样的: struct XMFloat3 { public: float x; float y; float z; XMFloat3(){} XMFloat3(float _x, float _y,float _z) { x = _x; y = _y; z = _z; } }; class Car { public: XMFloat3 m_position; char* m_name; int m_model; double m_price; void setPosition(XMFloat3); void setName(char* ); void setModel(int); void setPrice(double); XMFloat3 getPosition() { return m_position; } char* getName() { return m_name; } int getModel() { return m_model; } double getPrice() { return m_price; } void SetInformation(XMFloat3 position,char* name, int model,double price); ~Car(void); static Car* getInstance(); private: Car(void){ } Car(XMFloat3 position,char* name,int model,double price){ } static Car* instance; };,c#,c++,C#,C++,我使用包装类定义创建clr\library项目,如下所示: public ref class WrapperClass { public: WrapperClass(); void setInformation(XMFloat3 position,String^ name,int model,double price); void setPosition(XMFloat3); void setPosition(float x,float y,float z)

我使用包装类定义创建clr\library项目,如下所示:

public ref class WrapperClass
{ 
public:
    WrapperClass();

    void setInformation(XMFloat3 position,String^ name,int model,double price);

    void setPosition(XMFloat3);
    void setPosition(float x,float y,float z);
    XMFloat3 getPosition() { return obj->getPosition(); }
    void setName(String^ name);
    String^ getName() { return gcnew String(obj->getName()); }

    void setModel(int);
    int getModel() { return obj->getModel(); }

    void setPrice(double);
    double getPrice() { return obj->getPrice(); }

    float getX() { return obj->getX(); }

    ~WrapperClass();
private:
    Car *obj;  
};

但是当我在C#中使用这个包装类函数getPosition()时,在C#getPosition()声明中如下所示:

XMFloat3* getPosition(XMFloat *);
这不适合我使用,请告诉我我是否有任何错误,或者建议如何在这种情况下使用用户定义的数据类型

第二个问题是如何在C#中访问或使用用户定义的数据类型。e、 g如果我想从C传递XMFloat3数据#怎么可能??(我在C#.cs文件中创建了XMFloat3结构,并尝试使用它,但它的给定类型匹配错误

在C#中,包装类的setPosition声明如下: 公共无效设置位置(xmt); 错误是CSharp.XMFloat3与WrapperDll.XMFloat3的类型不匹配

请告诉我如何在C#中使用上述课程


谢谢

一个问题是,当您指向托管GC对象时,您不能使用*(指针)。您需要使用指针的GC变量..如果我将XMFloat3 getPosition(){return obj->getPosition();}更改为XMFloat3*getPosition(){return obj->getPosition()}现在c#getPosition声明类似于:public XMFloat3*getPosition;但由于存在保护级别,我仍然无法获取C#中的内部(x,y,z)值。错误:错误1'CreateClassLibraryForDllUSE.WrapperClass.getPosition()由于其保护级别D:\CaldPcPytoToL.CL\\cSARPpILdLL\FLUM1. C.57 xMFLUAT3是一个本地结构,不能从C++中使用。您必须为它编写一个公共的代码>结构值> /COD>包装器。我用X、Y、Z数据成员创建值类型结构XMFLATAT3X,现在我如何使用它来设置并获得C++ XMFLAT3 x、y、z数据成员。----------------------------------------------------------------------------------------我没有创建这样的结构,因为当我们在包装文件(CreateClassLibraryFordelluse)中包含Cpp_Dll.h时,XMFloat3在该文件中是可访问的,我认为它直接对我起作用。请也讨论一下这种情况下它在后端是如何工作的。谢谢