1、绝对不能在动态应用中调用全局变量。
如果非要调用,那估计也只能用以下这两种形式写。
const char g_filename1[] = "abc.dat";
#define g_filename2 "def.dat";
2、最后链接可能会编译不过去,log可能类似如下:
Error: L6265E: Non-RWPI Section PR_FixedPoint.o(.data) cannot be assigned to PI Exec region ER_RW.
Error: L6265E: Non-RWPI Section PR_Texture.o(.bss) cannot be assigned to PI Exec region ER_ZI.
Error: L6249E: Entry point (0x00008000) lies within multiple sections.
Error: L6248E: PR_FixedPoint.o(i.BinarySearchSC) in PI region 'ER_RO' cannot have address type relocation to SinCosTable in PI region 'ER_RW'.
解决办法:
1、去掉上述说的全局变量。
2、BREW 结构不支持全局或静态变量,因为动态下载的应用程序无法处理这些数据类型。 此外,使用全局或静态变量可能导致连接器出现目标错误。 始终将持久数据存储在小程序结构中。
3、尽量调用Brew lib库支持的MALLOC和FREE函数,我遇到的问题是以前用纯C写的,忘了将标准C的malloc函数换成Brew的函数了。
4、注意其他内存问题。
Brew动态应用编译问题总结
Brew动态应用编译问题总结
...