当前位置: 代码迷 >> 单片机 >> keil调用不已lib
  详细解决方案

keil调用不已lib

热度:600   发布时间:2016-04-28 14:40:58.0
keil调用不了lib
用VS生成了minixml的lib文件,mxml.h文件也include了,但是调用里面的函数还是会报..\..\Output\emwin.axf: Error: L6218E: Undefined symbol mxmlDelete (referred from main.o).
------解决思路----------------------
类本身有问题, 说是找不到什么东西
------解决思路----------------------
引用:
Quote: 引用:

类本身有问题, 说是找不到什么东西

应该不是,同一个lib跟.h,VS是可以正常使用,应该是我在keil的设置有问题,但是在网上找的都是一样的答案

 Undefined symbol mxmlDelete (referred from main.o). 
提示是main.c里的mxmlDelte找不到定义, 你在main.c里找到mxmlDelte然后Goto define看看转到哪去了?
------解决思路----------------------
1、你在VS上面编译的静态库,在Keil上是没法使用的,你需要在keil上编译源码,使用Keil编译静态库。因为PC上的指令集和MCU上的指令集不一样,而静态链接库是编译成二进制文件了,所以一定要指令集相同。
2、即使在Keil上编译静态库。指令集不一样也不可以用。如你编译静态库的时候选择的MCU型号是LPC2148,但是你在使用静态库的时候选择的MCU型号是STM32,由于STM32和LPC2148两者的指令集不一样,你也一样无法使用。LPC2148是ARM7机构,而STM32是M系列架构
------解决思路----------------------

我还以为你用VS新出的嵌入式插件编译嵌入式用的库
原来你直接就用PC平台的库,肯定出问题了

------解决思路----------------------
引用:
Quote: 引用:

1、你在VS上面编译的静态库,在Keil上是没法使用的,你需要在keil上编译源码,使用Keil编译静态库。因为PC上的指令集和MCU上的指令集不一样,而静态链接库是编译成二进制文件了,所以一定要指令集相同。
2、即使在Keil上编译静态库。指令集不一样也不可以用。如你编译静态库的时候选择的MCU型号是LPC2148,但是你在使用静态库的时候选择的MCU型号是STM32,由于STM32和LPC2148两者的指令集不一样,你也一样无法使用。LPC2148是ARM7机构,而STM32是M系列架构
嗯嗯,那你知道有哪些XML解析库是可以在STM32上用的吗?找了好久都找不到

STM32上面一般很少会做xml解析的,如果你的xml文件不是太复杂,你自己写个程序解析吧。以前我在那个公司做过xml解析,形成了各种链表
------解决思路----------------------
单独拿到keil里编译。
  相关解决方案