C# 如何调用c++;从c返回类的函数# 我有C++编写的函数,我想使用另一个C++项目中的函数。它在几个函数中运行良好,但在我返回类的函数中,它似乎不起作用(我两边都有相同的类)。 我创建了一个适配器,它返回一个名为CProfile的类: cl

C# 如何调用c++;从c返回类的函数# 我有C++编写的函数,我想使用另一个C++项目中的函数。它在几个函数中运行良好,但在我返回类的函数中,它似乎不起作用(我两边都有相同的类)。 我创建了一个适配器,它返回一个名为CProfile的类: cl,c#,c++,dll,adapter,dllimport,C#,C++,Dll,Adapter,Dllimport,如何调用c++;从c返回类的函数# 我有C++编写的函数,我想使用另一个C++项目中的函数。它在几个函数中运行良好,但在我返回类的函数中,它似乎不起作用(我两边都有相同的类)。 我创建了一个适配器,它返回一个名为CProfile的类: class CProfile { public double timeStamp; public int dimL, dimR; }; extern "C" __declspec(dllexport) CProfile getPr

如何调用c++;从c返回类的函数#

我有C++编写的函数,我想使用另一个C++项目中的函数。它在几个函数中运行良好,但在我返回类的函数中,它似乎不起作用(我两边都有相同的类)。 我创建了一个适配器,它返回一个名为CProfile的类:

class CProfile
{
    public double timeStamp;
    public int dimL, dimR;
};

extern "C" __declspec(dllexport) CProfile getProfileAdapter(int nInt)
{
    std::cout << "get profile" << std::endl;
    Profile profile=R->getProfile(nInt);
    CProfile cProfile;
    std::cout << "get time stamp" << std::endl;
    cProfile.timeStamp=profile.timeStamp;
    std::cout << "get dimL" << std::endl;
    cProfile.dimL=profile.leftProfile.size();
    std::cout << "get dimR" << std::endl;
    cProfile.dimR=profile.rightProfile.size();
    return cProfile;
}

我会在这里使用结构,类是不同的动物,因为它们是引用类型。这样的类不是很简单,但是结构更容易。C和C++类和对象的实现方式非常不同。例如,C++对象是垃圾收集的,而C++对象需要被显式删除(除非您采取其他措施)。如果您真的想创建类和对象,我相信您必须选择C++/CLI路径或COM。谢谢大家的帮助!我使用了结构而不是类,它很有效。但不幸的是,在其他类中有数组,我无法在c#中的结构中初始化数组。什么的@Ransar数组?您可能可以使用
StructLayout
在这两个类中都有double数组。我在这里使用struct,类是不同的动物,因为它们是引用类型。这样的类不是很简单,但是结构更容易。C和C++类和对象的实现方式非常不同。例如,C++对象是垃圾收集的,而C++对象需要被显式删除(除非您采取其他措施)。如果您真的想创建类和对象,我相信您必须选择C++/CLI路径或COM。谢谢大家的帮助!我使用了结构而不是类,它很有效。但不幸的是,在其他类中有数组,我无法在c#中的结构中初始化数组。什么的@Ransar数组?您可以使用
StructLayout
I在这两个类中都有double数组。
 class CProfile
 {
     public double timeStamp;
     public int dimL, dimR;
 };

 static void Main(string[] args)
 {

     CProfile c = new CProfile();
     c = getProfileAdapter(0);

 }

 [DllImport("c:\\Ran\\pmcppdllran.dll")]
 static extern CProfile getProfileAdapter(int nInt);