• jna StdCallCallback 回调问题查证


    1、jna 调用公司动态库老退出 退出码是0xc0000409,网上查是 溢出,于是编一个debug模式动态库来调试

    2、

    报这个错,网上查 与回调函数的调用约定方式有关 也就是__stdcall  __declspec

    看 dll 代码,导出函数都是 __declspec,回调函数是__stdcall

    功夫不负有心人 终于找到回调函数是__stdcall的处理方法

    1. package com.jna.dll;
    2.  
    3. import com.sun.jna.Pointer;
    4. import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
    5.  
    6. /**
    7. * @author Administrator
    8. * 定义回调函数接口并继承StdCallCallback
    9. * 必须继承自com.sun.jna.Callback接口 (如果回调函数是以stdcall输出,有时候可能引起jvm崩溃,
    10. * 可以改成继承StdCallCallback接口试试,)
    11. 子接口必须定义单个公有方法或一个名为callback的公有方法。必须持有到回调对象的一个存活引用。一个回调应该不抛出异常。
    12. */
    13. public interface CallBack extends StdCallCallback {
    14. void JMp4Server_RegCallBack(int UserID, int MP4BackCode,Pointer pData, int dwDataSize);
    15. }

    https://blog.csdn.net/little__superman/article/details/89326526

    3、另外 注意:要调用的DLL位数要与JDK位数相同,否则无法调用。

    java就是ok,以后全this

  • 相关阅读:
    外星人(alien)
    6. 第 6 章 函数
    5. 第 5 章 循环
    4. 第 4 章 条件选择
    3. 第 3 章 表达式和交互
    2. 第 2 章 C++简介
    1. 第 1 章 计算机和编程简介
    24. 蛇形填数
    23. 开灯问题
    12. aabb
  • 原文地址:https://www.cnblogs.com/cnchengv/p/14068396.html
Copyright © 2020-2023  润新知