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),我都不知道什么时候添加进去的,立马注释掉,一下子就可以编译通过了!
相关文档:
1.Linux文件系统
Linux
支
持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供
了虚拟文件系统(VFS)来统一它们的行为,虚拟文件系统为不同的文件系统与内核的通信提供了一致的接口。下图给出了Linux中文件系统的关系:
在Linux平台下对文件编程可 ......
(1)zImage自解压
本文以流行的Samsung公司的S3C2410,mini2440平台和linux-2.6.29为例,介绍如何在ZIX嵌入式开发环境下探索linux内核启动过程。
Linux内核启动一般由外部的bootloader引导,也可以在内核头部嵌入一个loader,实际的应用中这两种方式都会经常遇到。所以要了解内核启动最开始的过程,必须对bootloader如何 ......
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一、流式文件操作
这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:
typedef struct {
int level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File des ......
我计划的学习历程:
1. c和c++的基础知识,这个和操作系统无关,在windows上也可以学。c语言语法相对简单一点,c++不需要把所有的知识点都学会,要知道基本的封装,继承,多态之类的,还有STL。更深入的学习应该是在以后的工作中遇到问题了再去查资料。
2. 看书《APUE》,做书上的习题,掌握文件,系统调用,线程、进程、 ......