realview MDK C/C++ 混合编程问题(续一)

    前几天写了关于Keil与C/C++混合编程的若干问题,今天写的是继续前面的。

   
    在使用C/C++混合编程的时候,程序运行到类里面的虚拟函数时死掉,查看其vptr值为0x00000000,这时候不知道怎么解决,后来自己编了一个实例程序可以通过,发现vptr的值是在__main里面的 __rt_lib_init函数初始化的。这是用于初始化C库的函数,(我没有用常规的汇编跳转到__main,然后跳到用户的main函数,所以导致没有执行 __rt_lib_init,最终导致我的类里面的虚拟函数无法运行)。

   

 

    现在解决问题就很明显了在我的C程序里面添加 __rt_lib_init(0x0,0x0);就OK了。

接下来又有一个问题,编译的时候提示:__use_no_semihosting_swi was requested ,but __sys_command_string was referenced.

 

 

    搞了好久才发现我的代码里面有:#pragma import(__use_no_semihosting_swi),我都不知道什么时候添加进去的,立马注释掉,一下子就可以编译通过了!

你可能感兴趣的:(编程,c,汇编,String,command,import)