问题标签 [native-code]

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.

0 投票
2 回答
558 浏览

c# - nativeGetUninitializedObject 实际存在于哪里?

我对一些序列化的东西很好奇,所以我四处FormatterServices寻找,找到了一个名为的方法nativeGetUninitializedObject,它实际上处理了给定类型的初始化(不调用 custructor)。此方法用extern关键字和以下属性修饰:[MethodImpl(MethodImplOptions.InternalCall), SecurityCritical]

我想知道:这种方法实际上存在于哪里?CLR 调用什么代码来初始化给定的类型(不调用构造函数)?

0 投票
1 回答
1216 浏览

java - 如何从java调用用汇编语言代码编写的函数?

嗨,我想将汇编语言代码与 java.. 伙计们给我一些想法和示例程序,例如 hello world,因为汇编语言对我来说是新的..

0 投票
3 回答
315 浏览

java - jni starter question


I started looking into JNI and from what I understand is that if a problem occurs with the loaded dll, the jvm is possible to terminate on the spot.
I.e. the process can not be protected e.g. like when catching an exception.
So if my understanding is correct, my question is if there is a standard approach/pattern for this situation when using jni.
Or to state it differently, are processes using jni designed in way to avoid these issues? Or such problems are not expected to occur?

Thank you.

0 投票
4 回答
1542 浏览

java - 从理论上讲,我可以获取 openJDK JIT,并将我的 java 代码编译为本机吗?

我只是想知道如何摆脱 java jre 依赖并生成本机代码并将编译后的代码作为应用程序交付?

那么有可能吗?

PS我知道gcj编译器它在做什么?

0 投票
1 回答
621 浏览

windows-phone-7 - 是否有适用于 Windows Phone 7 的 Native C 的第三方编译器?

我知道微软删除了对 windows phone 7 的 C/C++ 支持,并且只允许 C# 为 windows phone 7 开发应用程序。但我知道支持 windows mobile 6.5 和智能手机的编译器 (Pelles C),我问一个月前在他们的论坛上,但没有得到回复。

有谁知道它是否支持Windows Phone 7?或任何其他支持 Windows Phone 7 原生开发的编译器?不必来自微软。

ps:我没有windows phone 7 phone,我有6.5,只是想知道我是否为我的手机编写了一些应用程序,我能不能将它移植到windows phone 7

谢谢。

0 投票
2 回答
3129 浏览

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)。

有人可以澄清我的疑问。

谢谢

努万阿兰巴奇

0 投票
4 回答
554 浏览

security - 内存安全 - 沙盒任意程序?

在某些语言中(Java、没有不安全代码的 C#,...)(应该)不可能破坏内存 - 没有手动内存管理等。这允许它们限制资源(访问文件、访问网络、最大内存使用,...) 非常容易地应用到应用程序 - 例如 Java 小程序(Java web 启动)。它有时被称为沙盒。

我的问题是:是否可以使用本机程序(例如用 C、C++ 等内存不安全的语言编写;但没有源代码)?我不是指简单的可绕过沙箱或防病毒软件。

我想到了两种可能:

  • 以不同的操作系统用户运行应用程序,为此用户设置限制。缺点 - 许多用户,对于每个参数组合,访问权限?
  • (不知何故)限制(OS API)函数,可以调用我不知道是否有任何可能性允许(至少在理论上)完全保护,没有绕过的可能性。

编辑:我对理论更感兴趣——我不在乎某些操作系统具有一些未记录的功能,或者如何在给定操作系统上对任何应用程序进行沙箱处理。例如,我想沙箱应用程序并只允许两个功能:从控制台获取字符,将字符放入控制台。怎么可能做到牢不可破,没有绕过的可能?

提到的答案:

  • Google Native Client,使用 x86 的子集 - 正在开发中,以及(可能?) PNaCl - 便携式本机客户端
  • 完整的虚拟机 - 显然是矫枉过正,想象一下数十个程序......

换句话说,本机(不安全的内存访问)代码是否可以在受限环境中使用,例如在 Web 浏览器中,具有 100%(至少在理论上)的安全性?

Edit2:Google Native Client正是我想要的——任何语言,安全或不安全,以本机速度运行,沙箱,甚至在网络浏览器中。每个人都可以使用您想要的任何语言,无论是在网络上还是在桌面上。

0 投票
3 回答
23713 浏览

android - 如何在android中获取音乐文件(MP3)的采样率和频率?

我正在android中开发音频播放器。所以我想添加播放歌曲的详细信息,即艺术家姓名、持续时间、比特率和采样频率。我可以使用MediaStore.Audio.Media library. 但我无法获得同一文件的比特率和采样频率。那么我怎样才能得到相同的呢?

据我所知,它可以通过使用本机库来完成。但是不知道怎么做?所以有人可以帮助我吗?

0 投票
2 回答
89249 浏览

android - 如何在 Android 中使用 addr2line

我被我的应用程序卡住了,因为我无法调试,因为它是一个多线程的应用程序并且崩溃并出现错误 SIGSEGV。我从 LogCat 获得了很多信息,它提供了我本地库中的地址。如果我可以将这些地址转换为我的代码,那将会很有帮助。

有人知道如何使用 android-ndk 提供的 addr2line 吗?

0 投票
2 回答
1259 浏览

c# - 在 64 位操作系统上的进程内 wmi 提供程序(32 位)中加载本机 dll(32 位)

我正在开发一个进程内 wmi 提供程序,它使用 [DllImport] 加载本机第三方库。dll 位置固定为 c:\mydllpath。在加载 dll 之前,我在提供程序的 Bind() 方法中将当前目录设置为 dll 位置。

Environment.CurrentDirectory = Environment.ExpandEnvironmentVariables("%SystemDrive%") + "\mydllpath";

Provider 是为“任何 CPU”构建的,使用 gacutil 和 installexe 安装。

gacutil.exe /if myprovider.dll

installutil.exe myprovider.dll

它在所有 32 位 Windows 平台上运行良好。但是在 64 位平台中(尝试使用 Windows 7 64 位),当我从 WMIC 测试时它不起作用。但是当我使用 WMI Code creator 进行测试时,它运行良好。

调试后我发现它抛出了以下错误。

System.BadImageFormatException 附加信息:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)

在网上搜索帮助后,建议为 x86 构建提供程序。但是使用 x86 构建的提供程序给出了另一个错误,例如...

错误:代码 = 0x80041013 描述 = 提供程序加载失败设施 = WMI

我还尝试使用 /linkref 命令行开关加载本机 dll(实际上是 2 个 dll 和一个 sys 文件),但由于无法使用 /linkref 加载 sys 文件而失败。

我编写了一个测试 C# 客户端应用程序并将所有文件保存在同一路径中,它工作正常。我希望我缺少一些 64 位安装的配置。

任何帮助将不胜感激,并在此先感谢!