请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2363|回复: 2

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

[复制链接]

该用户从未签到

发表于 2014-4-16 13:59:28 | 显示全部楼层 |阅读模式

绝对简单的一段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


回复

使用道具 举报

该用户从未签到

发表于 2014-4-16 16:43:22 | 显示全部楼层
很感谢分享....
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-4-29 14:10:19 | 显示全部楼层
fpccn中文社区有你更精彩!
回复 支持 反对

使用道具 举报

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1

GMT+8, 2020-7-12 14:17 , Processed in 0.056622 second(s), 24 queries .

Powered by Discuz! F1.0 Build 20160930

© 2001-2020 Comsenz Inc. & Discuz! Fans

快速回复 返回顶部 返回列表