当前位置: 代码迷 >> 综合 >> TBitmap resize在 android编译环境下 JNI调用方式出错的解决方法!!!
  详细解决方案

TBitmap resize在 android编译环境下 JNI调用方式出错的解决方法!!!

热度:60   发布时间:2023-12-15 20:55:52.0

绝对简单的一段source:

b:=tbitmap.create;

b.width:=9; //这个就出错了!

b:height:=9;


    没错,就是改变一个空的tbitmap对象的尺寸,在win32下没问题、linux下没问题,在 android的例子androidlcltest里没问题,就是自己开一个空的dll project有问题!!!

但,在resize前,如果有内容就不会出错,比如b.Assign(a)或loadfromfile...!!! 但是这样效率要低点!!


    不能不说这样防不胜防的陷阱还是挺吓人的,根据出错log根本不知道哪个语句出错,只是简单一句Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1) ... 因为是在android系统,根本没得在线调试。。


     不过经过一上午各种对比编译开关、对比代码,终于找出原因了: dll要编译成android的JNI调用模式,如果要用到图形处理,必须要加上Interfaces单元,否则就会有上述错误!!

     而我这个project加了Interfaces单元后又是各种unit找不到,最后在other unit files 里面加上这两个搜索路径就可通过: 

    $(LazarusDir)\lcl\interfaces\customdrawn;$(LazarusDir)\lcl\interfaces\customdrawn\android



  相关解决方案