kei中移植库问题
各位大牛,keil中库移植问题,求指教:
1、在工程1中,keil下,所有文件都是.cpp后缀,使用c++编写的,编译后生成了一个库文件;
2、将该库移植到keil环境下的另外一个工程,该工程使用c语言编写,无法移植成功
如下测试代码:
工程1、a.cpp + a.h -->a.lib;(可以编译成功,生成了库文件)
工程2、b.c + a.lib + a.h -->。。 (报错)
代码如下:
工程1、a.cpp:
#include<vector>
#include<stdio.h>
#include "vec_test.h"
using namespace std;
void Vec_Test(void)
{
vector<int> vt;
vt.push_back(1);
printf("\r\nVec_Test >> vt.push_back(1) = %d", vt[0]);
// printf("\r\nVec_Test >>");
}
//////////////////////////////////////////////
a.h:
#ifndef _VEC_TEST_H
#define _VEC_TEST_H
extern "C" {
extern void Vec_Test(void);
}
#endif
工程2、
b.c
#include <stdio.h>
//
#include "vec_test.h"
int main (void) {
//
Vec_Test();
printf ("Hello World\n"); /* the 'printf' function call */
while (1) {
; /* ... */
}
}
//////////////////////
a.h
#ifndef _VEC_TEST_H
#define _VEC_TEST_H
extern void Vec_Test(void);
#endif
这样工程2编译后,一直提示如下错误,求赐教:
.\Obj\Hello.axf: Error: L6218E: Undefined symbol __aeabi_unwind_cpp_pr0 (referred from rwalloc.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol abort (referred from rwstdexcept.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol getenv (referred from rwstdexcept.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol __rt_new_handler_addr (referred from new.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol mbrtowc (referred from locale.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol wcrtomb (referred from locale.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol __rt_eh_globals_addr (referred from arm_exceptions_globs.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol __rt_ddtor_pointer_addr (referred from aeabi_atexit.o).
.\Obj\Hello.axf: Error: L6218E: Undefined symbol __rt_lib_shutdown_cpp_1 (referred from aeabi_atexit.o).