Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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++语言库。嵌入式系统是在ARM平台上用C语言编写的。我一直在想我有可能做到这一点。C++编程语言比C.复杂得多。 < C++库是否要求环境正常运行?如果我这样做,我可能会遇到的问题 C++的OOP模型需要特殊的内存管理系统。[新建、删除、智能指针] 在我看来,C++的异常处理是一种神话。据我所知,WinCE的C++异常处理需要ARM核/内核的支持。 其他功能,例如运行时类型信息_C++_Arm_Rtos - Fatal编程技术网

C++;板上嵌入式系统 我试图在我们的嵌入式系统上移植一个C++语言库。嵌入式系统是在ARM平台上用C语言编写的。我一直在想我有可能做到这一点。C++编程语言比C.复杂得多。 < C++库是否要求环境正常运行?如果我这样做,我可能会遇到的问题 C++的OOP模型需要特殊的内存管理系统。[新建、删除、智能指针] 在我看来,C++的异常处理是一种神话。据我所知,WinCE的C++异常处理需要ARM核/内核的支持。 其他功能,例如运行时类型信息

C++;板上嵌入式系统 我试图在我们的嵌入式系统上移植一个C++语言库。嵌入式系统是在ARM平台上用C语言编写的。我一直在想我有可能做到这一点。C++编程语言比C.复杂得多。 < C++库是否要求环境正常运行?如果我这样做,我可能会遇到的问题 C++的OOP模型需要特殊的内存管理系统。[新建、删除、智能指针] 在我看来,C++的异常处理是一种神话。据我所知,WinCE的C++异常处理需要ARM核/内核的支持。 其他功能,例如运行时类型信息,c++,arm,rtos,C++,Arm,Rtos,你能和我分享一些经验吗。非常感谢。 < P>从你的问题中,你不知道你是否尝试将端口(即重写C++程序到C一)或只是在嵌入式环境中运行C++程序,因此(几乎)不改变它。如果是#1,你就应该动动脑筋。那里没有任何麻烦(除了需要很长时间…),如果发生#2也不容易。需要考虑的事情(我假设您使用gnu工具链或从中派生出来的工具链,如果没有-我只是不知道事情是如何发生的) 你们有可以这样做的装载机吗?也就是说,模板符号应该以一种特殊的方式进行处理(它们很弱),但只有在使用一些dyld(动态库)时,它才会困

你能和我分享一些经验吗。非常感谢。

< P>从你的问题中,你不知道你是否尝试将端口(即重写C++程序到C一)或只是在嵌入式环境中运行C++程序,因此(几乎)不改变它。如果是#1,你就应该动动脑筋。那里没有任何麻烦(除了需要很长时间…),如果发生#2也不容易。需要考虑的事情(我假设您使用gnu工具链或从中派生出来的工具链,如果没有-我只是不知道事情是如何发生的)

  • 你们有可以这样做的装载机吗?也就是说,模板符号应该以一种特殊的方式进行处理(它们很弱),但只有在使用一些dyld(动态库)时,它才会困扰您。加载程序应该能够调用全局构造函数和析构函数。异常解除信息的加载也应由it处理。值得一看的是:
  • 你需要C++运行时。即对该语言的基本支持,作为一个起点,我建议在这里看一下: 这也意味着使用malloc/free函数,类似于mmap <> LI>如果程序使用线程,TLS(线程本地存储,THEADLIX本地C++关键字),文件处理和异常的复杂性急剧增加…我希望您在移植或使用完整版本的stdlibc++(g++)或libc++(clang)时好运 只是想一想,你需要GLUBC或者一些微替换,就像你使用一些不标准的替代品一样,值得思考的是你将如何加入上面的C++库(STDLBC+++LBC++,或者你的理论可能使用的其他东西)

关于以上这些问题的思考,我决定,对于我自己的裸露金属臂项目,C++太多,并且力在C.

取决于你的库,但是在嵌入式平台上,你通常关闭RTTI和异常处理。C++通常需要内存分配器,通常以MALOC的形式实现。如果是其他内容,则必须提供默认的overator new和operator delete实现。编译器将处理其余部分。

您需要用C语言编写这个库吗?或者你只需要编译它并提供一个C API来进行通信吗?你的编译器是怎么说的?是的,你可以和它“通信”,但是如何呢?图书馆必须在你的系统中运行,对吗?例如,在RTOS中,我们是否可以将此库添加到要与之通信的任务中?我们尚未获得此库,但他们正在寻求可能性,我们正在研究此问题。坦率地说,如果C编译器/链接器提供正确的/导出的接口(避免C++名称Mangle),我认为C编译器/链接器将不会有太多的麻烦。我关心的是,问题出现在运行时。