首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNA : Exception_Access_Violation

JNA : Exception_Access_Violation
EN

Stack Overflow用户
提问于 2009-06-03 20:34:24
回答 2查看 1.8K关注 0票数 2

我使用JNA在libpotrace.dll中调用这个函数,这个函数是:

代码语言:javascript
复制
potrace_state_t *potrace_trace(const potrace_param_t *param,
const potrace_bitmap_t *bm);

库中的参数为:

代码语言:javascript
复制
typedef unsigned long potrace_word;

struct potrace_bitmap_s {
  int w, h;              /* width and height, in pixels */
  int dy;                /* words per scanline (not bytes) */
  potrace_word *map;     /* raw data, dy*h words */
};
typedef struct potrace_bitmap_s potrace_bitmap_t;

struct potrace_param_s {
  int turdsize;        /* area of largest path to be ignored */
  int turnpolicy;      /* resolves ambiguous turns in path decomposition */
  double alphamax;     /* corner threshold */
  int opticurve;       /* use curve optimization? */
  double opttolerance; /* curve optimization tolerance */
  potrace_progress_t progress; /* progress callback function */
};
typedef struct potrace_param_s potrace_param_t;

在我的java代码中,我有:

代码语言:javascript
复制
public class Potrace_bitmap_t extends Structure{
    public int w=36;
    public int h=2; /* width and height, in pixels */
    public int dy=2; /* words per scanline (not bytes) */   
    public long [] map =new long[dy*h];
}

public class potrace_param_t  extends Structure{    
    //public static class ByValue extends Nat implements Structure.ByValue { }

    public int turdsize=0;
    public int turnpolicy=0;
    public double alphamax=0;
    public int opticurve=0;
    public double opttolerance=0;   

}

potrace_param_t na=lib.potrace_param_default();/*This function returns a fresh set of tracing parameters, initialized to defaults.
Potrace_bitmap_t bm=new Potrace_bitmap_t();
bm.map[0]=1113215L;
bm.map[1]=4026531840L;
bm.map[2]=3276415L;
bm.map[3]=4026531840L;
Potrace_state_t pt=lib.potrace_trace(na, bm);

当我执行potrace_trace()时,出现以下错误:

代码语言:javascript
复制
An unexpected error has been detected by Java Runtime Environment:

 EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6504fbee, pid=2728, tid=2436

 Java VM: Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode, sharing)
 Problematic frame:
 C  [libpotrace.dll+0xfbee]

 An error report file with more information is saved as hs_err_pid2728.log

 If you would like to submit a bug report, please visit:
  http://java.sun.com/webapps/bugreport/crash.jsp

我不明白为什么。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-06-04 01:30:54

Potrace_bitmap_t的第四个字段应该是一个指针,而不是64位值的数组。您遗漏了potrace_param_t的最后一个字段。

票数 0
EN

Stack Overflow用户

发布于 2009-06-04 10:18:18

但是在图书馆的文档里,我发现了这个

代码语言:javascript
复制
w = 36;
h = 12;
dy = 2;
map[22] = 0xfff0fc02; map[23] = 0x00000000;
map[20] = 0x7ff1fe02; map[21] = 0x00000000;
map[18] = 0x3ff3ff07; map[19] = 0x00000000;
map[16] = 0x1ff7ff87; map[17] = 0x00000000;
map[14] = 0x0ff7cf8f; map[15] = 0x80000000;
map[12] = 0x07f7878f; map[13] = 0x80000000;
map[10] = 0x03f7879f; map[11] = 0xc0000000;
map[8] = 0x01f7cf9f; map[9] = 0xc0000000;
map[6] = 0x00f7ffbf; map[7] = 0xe0000000;
map[4] = 0x0073ff3f; map[5] = 0xe0000000;
map[2] = 0x0031fe7f; map[3] = 0xf0000000;
map[0] = 0x0010fc7f; map[1] = 0xf0000000;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/947069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档