您的位置:程序门 -> .net技术 -> vc.net



c#工程调用c++的类工程出现的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c#工程调用c++的类工程出现的问题[已结贴,结贴人:qiren5761]
发表于:2007-04-11 13:42:04 楼主
以前用标准c++时写了一些算法,现在我把它们拷贝到.net的c++类工程里重新编译;
然后再用c#调用;但在c#调用时,发现c++的类都提示成了结构体,不能访问构造函数和其它类方法;
有什么好的解决办法没有?是不是必须得重新写?


以下是c++工程里的一个.h文件

#ifndef   gmathh
#define   gmathh

#include   <iostream>
#include   <string>
#include   <list>
#include   <exception>
#include   <cmath>
//---------------------------------------------------------------------------

using   namespace   std;

public   class   tcurvenh
{
public:
//问题:进行拟合前是否要将数据点按x的值进行排序?
tcurvenh(const   double*   x,const   double*   y,const   int   n,const   int   m):x(x),y(y),n(n),m(m){};
//取得拟合结果(返回结果多项式)
tpolynomial   getresult();
private:
//原始数据(不允许修改)
const   double*   x;
const   double*   y;
const   int   n;
const   int   m;
//计算参数d
double   cald(const   tpolynomial&   p);
//计算参数a
double   cala(const   double   d,const   tpolynomial&   p);
//计算参数b
double   calb(const   double   d0,const   double   d1)const   {   return   d1/d0;}
//计算参数c
double   calc(const   double   d,const   tpolynomial&   p);
//多项式迭代
//ah为前一项的多项式
//bh为前二项的多项式
//ch为当前要求的多项式
//result为最终结果多项式
tpolynomial   nextnhpolynomial(const   tpolynomial&   ah,const   tpolynomial&   bh,tpolynomial&   result);
};
#endif


这是在c#工程里使用c++里定义的类,但不能这样定义该类,鼠标放在tcurvenh上提示:struct     tcurvenh;     而且按无参数可以new   tcurvenh,可找不到任何方法;

        public   partial   class   form1   :   form
        {
                public   form1()
                {
                        initializecomponent();
                }

                private   void   form1_load(object   sender,   eventargs   e)
                {
                        double[]   x   =   new   double[20];
                        double[]   y   =   new   double[20];
                        int   pointn   =   20;
                        int   nh_jn   =   2;
                        tcurvenh   c   =   new   tcurvenh(x,   y,   pointn,   nh_jn);
                     
                }
        }
发表于:2007-04-11 14:34:081楼 得分:0
发表于:2007-04-11 15:27:032楼 得分:0
发表于:2007-04-11 17:04:023楼 得分:25
好像不能直接调用c++编写的类.为什么不讲其先编成dll或com呢,这样做肯定可以的
发表于:2007-04-11 19:51:514楼 得分:25
com吧。
发表于:2007-04-11 20:01:445楼 得分:25
c#对于底层的东西很差的
发表于:2007-04-12 08:41:416楼 得分:25
用c++/cli写wrapper类


快速检索

最新资讯
热门点击