This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

用HCG生成的代码如何结合C++编程

Other Parts Discussed in Thread: HALCOGEN

您好,我想问下这个HCG生成的代码必须使用CCS project来使用吗?如果用CCS建立一个C++的工程,能不能使用HCG生成的代码呢?

另外,如何在CCS中配置建立一个C++的工程呢?具体应该如何操作?

Regards

yong

  • 在CCS中选择建立C++工程时在project type中选择的是GNU Autotools,生成后控制台显示两个错误,Program “g++” not found in path 和 Program "gcc" not found in path.

    如果选择project type中的Executable里面的工程,在右边ToolChains里面有两个选项,选择Microsoft Visual C++编译后还是会有错误,缺少kernel32.lib,添加这个库文件后还会有一些lnk2019的错误,无法解析的外部符号

    想问下这个如果建立C++工程的话还需要装其他的什么东西吗?感觉现在使用编译器还得包含机器上原来的编译器之类的东西

    Regards

    yong

  • Hi yong,

    即使你需要使用C++来写程序,在建立工程时还是需要建立CCS Project,而不是建立普通的C++ 工程。

    Halcogen生成的代码都是C格式的,如果需要有C++ 来写程序的话,需要修改一下。可以把每个外设封装成一个类,把预先定义函数都作为成员函数。类的构造函数和析构函数需要手动添加,头文件也需要对应修改。

    Regards,

    Jay

     

  • Hi,Jay

    如果单纯的使用CCS作为开发环境进行C++的开发的话还需要装什么插件么?

    另外,之前做的一个C++工程,如果要结合HCG 的代码使用的话就只能把那些文件一个个的复制过来然后再去调用HCG的代码了么,这样工程量貌似很大啊。

    您这列说的把外设封装成一个类指的是把HCG中生成的比如说can.c中的函数封装起来么?

    Regards,

    yong

  • Hi yang,

    单纯使用CCS来开发Hercules,用C++ 编程,不需要安装其他插件。

    其实把C改成C++也是很快的。

    附件为我改写的CAN的头文件和源文件。

    http://www.deyisupport.com/cfs-file.ashx/__key/communityserver-discussions-components-files/70/2438.can.h

    http://www.deyisupport.com/cfs-file.ashx/__key/communityserver-discussions-components-files/70/4861.can.cpp

     

    Regards,

    Jay

  • 另外需要向您咨询的是如果不需要使用芯片的某些功能,比如说不使用SCI模块,那在HCG中还是会生成相应的.c跟.h文件在程序中会使用到么?这样的话全部生成的文件都得做相应的改变吗?

    如果按照您提供的例子改成CPP的文件,那么下次再使用HCG生成代码后是不是还需要再改一遍呢?

    regards,

    yong

  • Hi yong,

    1. 你在Halcogen配置时,需要用到的外设模块把它使能,这样Halcogen就生成对应的.c文件, 但是.h不管是否使能都会存在。

    2. 如果用Halcogen再次生成,那么会生成一个新的.c文件,不会覆盖改完的.cpp,但仍需要再改一遍。目前,Halcogen只能生成C文件。

     Regards,

    Jay

  • 如果涉及到中断的话,将中断服务程序改成相应的cpp文件会不会影响系统正常的调用呢?中断函数这块我们自己配置只是在HCG中给了中断的向量表,这个程序内部具体调用会不会因为改成cpp而受影响呢?

    还有就是以太网这部分程序用到lwip的协议栈,这块好像不太可以改成cpp的吧?

    regards,

    yong

  • Hi yong,

    中断不会有影响。

    以太网部分可以不用改,因为C++是兼容C的,也就是说,在C++ 的工程里,所以C定义的函数都可以正常使用。

    Regards,

    Jay