问题标签 [native-methods]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winforms - 如何定位非托管异常的来源?
我有一个 WinForms 应用程序,我希望能够在其中提供 HTML 编辑功能。因此,我将Lutz Roeder 的 HTML Writer从 C# 转换为 VB.NET,并将其从 windows 窗体转换为自定义用户控件,该控件现在托管在 MDI 子窗体中。
在我关闭父 MDI 之前一切正常,在这种情况下它会崩溃,并且我无法捕获异常。
我已将编辑器控件隔离到一个不执行任何其他操作的小型 WinForms 应用程序中,并验证问题仍然存在。
我还打开了非托管代码调试(我使用的是 VS2010,为 x86 和 Framework 3.5 编译),我得到的只是:
我注意到的唯一一件事是,如果我在打开包含编辑器的表单后离开很长一段时间,它不会崩溃。
我真正欣赏的是一些关于如何去寻找这个问题的想法。当然,我在 C# 到 VB 的转换中可能犯了一个错误,但我很难知道去哪里找。
编辑:
我已经运行了带有调试器的应用程序,但它并没有给我任何有用的东西。
我得到的只是 Windows 的“应用程序已停止工作”消息,问题详细信息中包含以下内容:
我可以看到这是一个访问冲突,但即使我去Debug > Exceptions > Win32 Exceptions并勾选c0000005,当它中断时我没有得到任何有用的东西 - 只是“没有可用的源”。
c# - 在本机命名管道和 System.IO 命名管道之间发送多条消息
我需要在本机命名管道和 System.IO 命名管道之间发送多条消息。我从 All-In-One Code Framework(IPC 和 RPC)获得了这种通信两端的代码。
服务器:
} catch (Exception ex) { Console.WriteLine("服务器抛出错误:{0}", ex.Message); } 最后 { if (hNamedPipe != null) { hNamedPipe.Close(); hNamedPipe = null; } }
客户:
正如您在上面“从客户端向服务器发送请求”部分中的 for 循环中看到的那样,我试图弄清楚如何向服务器发送多条消息。我看到服务器代码循环执行,直到 NativeMethod.ReadFile() 方法返回 true。我的问题是它总是在读取第一条消息后返回 true,而忽略第二条消息所以我的问题,具体来说,是我需要在客户端代码中做什么,以便此方法返回 false,然后它将去获取第二条消息。
java - Object[][] 的 Java 字段描述符
方法描述符中 Object[][] 的字段描述符是什么?假设存在一个类 foo.bar.Class 并且一个方法需要一个 Class[][],根据
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#14152
或 JNI 规范我的理解是它应该是
但这被评估为“[foo.bar.Class”的数组,这当然会触发java.lang.NoClassDefFoundError
.
“内部”数组是否应该被认为是 java.lang.Object,导致
?
java - 如何从java调用用汇编语言代码编写的函数?
嗨,我想将汇编语言代码与 java.. 伙计们给我一些想法和示例程序,例如 hello world,因为汇编语言对我来说是新的..
java - 如何在动态 Web 项目中使用 JNI?
我写了一个本地方法来访问端口。我能够在一个简单的 Java 项目中运行 JNI。但是,当我尝试在 Web 项目中运行它时,我遇到了这样的异常:
线程“主”java.lang.UnsatisfiedLinkError 中的异常:
java - 在 Java 中管理基于 ZIP 的压缩文件
我知道 Java 本身支持浏览和操作压缩在 ZIP 文件中的文件的能力,因为这就是 JAR 文件。我如何利用它来制作和管理基于 ZIP 的文件(用于保存程序的状态)?
请注意,我正在进行的项目旨在在没有任何外部库的情况下完成其目标。所有库都必须已包含在 Java 1.6 或 1.7 中。
java - JVM如何在宿主环境中调用native方法
这些天我一直在阅读Java Native Interface。所以顺便说一下,我确实有疑问。举个例子,如果我们需要在Java程序中进行I/O操作,我们使用Java API进行I/O操作.此外,在低级别,它应该映射到操作系统级别的I/O处理。问题是Java API如何与主机操作系统中的本地I/O方法交互。
Short and Sweet,我听说JDK中的一些方法是本地实现的。这些本地方法是如何被Java API调用的。我猜应该是JNI(Java Native Interface)。
有人可以澄清我的疑问。
谢谢
努万阿兰巴奇
android - android mupdf libmupdf.so 运行时错误“未找到本机 openFile 的实现”
我刚刚在我的 Mac 上从 mupdf.com 编译完 mupdf。花了一些时间才弄明白,但现在我的 libs/armeabi 文件夹中有一个 libmupdf.so。
他们提供了一个名为 MuPDFCore.java 的此类示例,可在此处查看:http: //mupdf.com/repos/mupdf/android/src/com/artifex/mupdf/MuPDFCore.java
我在我的项目中使用了这个类,它在 LogCat 中说明了以下内容:
试图加载 lib /data/data/com.myapp.android/lib/libmupdf.so 0x4070e050
添加了共享库 /data/data/com.myapp.android/lib/libmupdf.so 0x4070e050
在 /data/data/com.myapp.android/lib/libmupdf.so 0x4070e050 中找不到 JNI_OnLoad,跳过初始化
未找到本机 Lcom/myapp/android/viewer/MuPDFCore;.openFile (Ljava/lang/String;)I 的实现
调试/AndroidRuntime(27523):关闭 VM
WARN/dalvikvm(27523): threadid=1: 线程以未捕获的异常退出 (group=0x400ee760)
错误/AndroidRuntime(27523):致命异常:主要
错误/AndroidRuntime(27523): java.lang.UnsatisfiedLinkError: openFile
据我所知,该库正在加载,在我弄清楚如何编译该库之前,它一直在崩溃并说“mupdf”是一个空链接。
他们的例子几乎说 openFile 是一个本机函数......就在我认为我想通了另一个问题的时候。我整天都在努力。任何输入都会很棒!
是不是编译不好?我在终端中没有收到任何错误。
glassfish - 如何在 Glassfish 3.1 中使用原生 .so
我正在尝试为嵌入式设备构建一个 Web 界面,它将显示网络统计信息。我正在使用 Glassfish 3.1 Application Server,我想使用 jnetpcap 来监听网络流量。jnetpcap 依赖于 libpcap 本机库。我试图从 Oracle 中找到有关在 Glassfish 中使用本机库的文档,但我还没有找到我想要的东西(而且我可能正在寻找错误的东西)。
当我的 servlet 加载失败时
原因:java.lang.NoClassDefFoundError:无法初始化类 org.jnetpcap.Pcap
我将其解释为,类加载器可以找到该类(我在部署它时已将其指定为库)但无法加载它。我的第一个推论是这可能是一个安全策略问题,或者 jvm 找不到 libpcap.so。
我使用 Configurations->server-config->jvm-settings 在管理控制台(即 Web 界面)中设置了 system.library.path 的路径。在“路径设置”选项卡中,我将路径“/usr/bin/libpcap.so”放在本机库路径后缀字段中。当我重新启动 Glassfish 服务器时,我收到以下消息:
[#|2011-03-31T13:30:13.962+1100|警告|glassfish3.1|null| ... GlassFishConfigBean.com.sun.enterprise.config.serverbeans.JavaConfig},原因 = JavaConfig 属性“NativeLibraryPathSuffix”从“null”更改为“/usr/bin/libpcap.so”,当 = 1301538613961|#]
稍后在日志中,本机库路径出现在路径输出中
-Djava.library.path= ... /usr/lib64:/lib64:/lib:/usr/lib:/usr/bin/libpcap.so
所以我认为本机库已成功加载。有没有办法可以检查是否确实加载了本机库?
我还禁用了安全管理器(只是暂时尝试让 servlet 工作;我计划在它工作后实施更微妙的安全策略),这也没有解决问题。
我是否正在尝试正确加载本机库?我如何才能找到更多关于是否加载了本机库以及为什么无法初始化 org.jnetpcap.Pcap 类的信息?
谢谢,蒂姆
c - 在 OCaml 库中只运行一次代码
我正在编写一个 OCaml 库,它有一些初始化代码,在使用该库的程序生命周期内只需要运行一次(并存储一些将在程序生命周期内持续存在的状态,但只能在库本身中使用),以及一些仅在使用该库的程序退出时才需要运行的清理代码。
如果它是相关的,我的库是两部分:一个低级 C 库的接口,以及一些更高级的东西,使编程更容易。我可以在 C 的某个地方做我需要的事情吗?理想情况下,我的用户不会关心它是如何实现的,他们永远不会看到 C 位。
在 Python 中,我会通过运行代码来做到这一点,import
但 OCamlopen
实际上并没有运行任何东西,它只是对模块命名空间加糖,然后是 Python 的atexit
,但我找不到 Ocaml 的等价物。
我考虑过的一种方法是将我的库构建为一个“框架”,但我认为这不足以保证这种过度设计的方法。谢谢!
更新:好的,我想。我正在使用 C 代码来处理退出时的清理,并且我对代码进行了一些修改,因此在 C 端有一个指向全局状态的指针
看来,在我的图书馆里,我现在有
当它被open
主程序运行时,它确实会运行......但是如何?