Board logo

标题: C#项目转C++项目 [打印本页]

作者: look_w    时间: 2019-1-19 16:48     标题: C#项目转C++项目

最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑:

1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.csdn.net/topics/392440547

2)类的变量默认值不同 .net默认是类型的默认值,C++没有默认值的。要避免C++的类成员没有默认值的意外行为。

3)a[j]和a[i,j]是不相同的。

4)VS2013 C++程序的默认堆栈大小为1MB,太小,有时候会堆栈溢出,可以参考  

5)std::remove不能从vector中移除元素,需要配合erase使用。

6)VS2013C++工程调试时看不到局部变量的值:设置问题项目右键属性打开后--Configuration Properties --->c/c++ ---->  Optimization下面选择第一项选Disabled(/od)

7)C++浮点数在计算过程中保留有效数字,可以使用如下代码,但是耗时较多

    double round(double number, unsigned int bits) {
        stringstream ss;
        ss << fixed << setprecision(bits) << number;
        ss >> number;
        return number;
    }

8)C#项目怎么来调用C++的动态库:

这里的result是C++动态库传出的参数,在C#里面用StringBuilder来接受,在C#里面调用GetProvincePrice时,提前给StringBuilder申请好空间。

bool GetProvincePrice(char * param_string, char * result);

    [DllImport("CPlusPlus.dll", EntryPoint = "GetProvincePrice", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
            public extern static bool GetProvincePrice(string exlist, StringBuilder result);




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0