java 调用 pb dll_[转载]一个java调用delphi写的dll问题,郁闷了一天一晚解决

2010.4.2日晚-2010.4.3下午:

需要开发个小程序,用到了java 调用dll库。

dll我用delphi开发,其中涉及到处理xml文档.此dll在delphi开发环境下测试通过,可一在java环境中调用,则jvm崩溃.

为解决此问题

,从2010.4.2日下午一直干到2010.4.3日清晨4:00,未解决,在无比郁闷中沉沉睡去。

起床已是4.3日10:00点,隐约醒来,想着未解决的问题,继续郁闷,再睡不着,于是起床继续。

由java调用dll,程序又不报异常,直接由jvm崩溃,无法调试,导致我几乎崩溃。

在我崩溃前最后几秒(2010.4.3

13:49),忽然灵光一闪,想到delphi操作xml文档,前后必加

CoInitialize(nil);

......

coUnInitialize();

是不是此原因呢?

再看delphi代码,果然,在调测dll用的例子中,我加了此两句,但在dll本身中未加此两句,所以用delphi本身的测试用例无问题,一到java中就出问题,于是把此两句加在dll操作xml相关位置。再次运行java,......pass,ok!!!!!

狂喜中!!!

反思开发过程:明知delphi操作xml需加CoInitialize(nil),coUnInitialize(),却又未充分认识它,导致时间浪费了整整一天,还茶不思饭不想。

jvm崩溃日志如下:

#

# A fatal error has been detected by the Java Runtime

Environment:

#

# Internal Error (0xeedfade), pid=5580, tid=3132

#

# JRE version: 6.0_18-b07

# Java VM: Java HotSpot(TM) Client VM (16.0-b13 mixed mode

windows-x86 )

# Problematic frame:

# C [kernel32.dll+0x3fbae]

#

# If you would like to submit a bug report, please visit:

# http://java.sun.com/webapps/bugreport/crash.jsp

# The crash happened outside the Java Virtual Machine in native

code.

# See problematic frame for where to report the bug.

#

--------------- T H R E A D ---------------

Current thread (0x0237ac00): JavaThread "main" [_thread_in_native,

id=3132, stack(0x00a80000,0x00ad0000)]

siginfo: ExceptionCode=0xeedfade, ExceptionInformation=0x04ddca7d

0x04fd1684 0x800401f0 0x04ddca7d 0x04fd1598 0x00abf92c

0x00abf8f8

Registers:

EAX=0x00abf874, EBX=0x800401f0, ECX=0x00000007,

EDX=0x00000000

ESP=0x00abf874, EBP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值