用于Java反射的Monodroid JNI调用一个私有方法
在单型项目中,我需要能够在课堂上调用私人方法.来自相关问题上的答案,看来这在Java中可以通过反射: 在Java中: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.os.ParcelFileDescriptor; ... ParcelFileDescriptor pipe[] = null; try { Method createPipeMethod = ParcelFileDescriptor.class.getDeclaredMethod("createPipe"); pipe = (ParcelFileDescriptor[]) createPipeMethod.invoke(null); } catch (NoSuchMethodException e) { throw new Runtim
22 2024-04-26
编程技术问答社区
将管理的无符号字符*转换成jbyte*。
如何将托管的未签名char*转换为jbyte*? 由于我是新手,因此片段也会有所帮助. 这是我的本地代码: - JNIEXPORT jobject JNICALL Java_com_me_NativeCaller_processImages (JNIEnv *env, jclass c, jbyteArray front, jbyteArray back){ unsigned char* frontBuffer = convertJByteArrayIntoUnsignedChar(env, front); unsigned char* backBuffer = convertJByteArrayIntoUnsignedChar(env, back); System::Collections::Generic::List^>^ returnedValue = processImages(frontBuffer,bac
10 2024-04-26
编程技术问答社区
JNI调用.NET dll
我正在尝试创建一个Java应用程序,该应用程序将通过中间的Visula c ++ dll调用C#dll,当我尝试从CMD提示或Eclipse运行.class文件时,一切都很好,并且问题是为了解决问题我需要将c#dll放置在与java.exe相同的目录中,否则会出现本机呼叫的例外,从而使无法构建Java项目,关于如何完成此操作的任何想法 解决方案 您可以使用com Interop启用并注册托管(.net)DLL. 请参阅此链接: http://support.microsoft.com/kb/kb/828736 其他解决方案 还有其他方法,没有com.如果无法更改.NET组件以支持COM客户端,则可能会发现一个可取的或需要一个. 当加载CLR的过程时,组装搜索路径由该过程的主WIN32模块的位置确定.组装搜索路径不同于Win32 DLL搜索路径.在这种情况下,它从java.exe的位置开始.结果,搜索路径包括全局汇编缓存(GAC),java.exe的文件夹和列为java.ex
6 2024-04-23
编程技术问答社区
从C#中调用我自己的Java代码
有我自己的Java代码,我正在使用C#来调用(通过JNI)呼叫JNI代码的一些非托管代码.我正在使用JNI,因为我需要确保: Java代码可以通过Real JVM而不是通过.NET VM 运行的能力 能够连接到VM进行调试的能力(IKVM确实不支持它) 我需要免费解决方案 当前的免费解决方案不适用(例如IKVM) 无论如何,我的问题是如何以最佳方式管理这些层之间的字符串,而不会泄漏. 我正在做: [DllImport(@"MyDll.dll")] public extern static void receive_message(string receDest, StringBuilder response); 这意味着我正在为托管代码中的响应分配内存. 我想避免这种情况,因为我不知道响应长度.我如何编写适合JNI的方法,该方法将在没有泄漏的情况下为托管代码分配正确的缓冲区. JNI代码应安全. 有什么建议? 谢谢, Guy 解决方案
2 2024-04-23
编程技术问答社区
在unity中使用带有字符串参数的JNI AndroidJNI.GetMethodID
我正在使用Android Java插件的Unity,我试图以Unity从Java调用功能,并成功地工作. cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer"); fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity", "Landroid/app/Activity;"); obj_Activity = AndroidJNI.GetStaticObjectField(cls_Activity, fid_Activity); kdataActivityClass = AndroidJNI.FindClass("com/kdata/unitytest/UnityUrlPlugin"); startAdsMethod = AndroidJNI.Ge
6 2024-04-20
编程技术问答社区
从.NET中调用Java API-最佳方法
我需要从现有的.NET代码库中调用所有位于Java中的API.这里最好的方法是什么?在Java中编写一个网络服务,基本上只是将呼叫转发给API - 或者使用 解决方案 您可以使用其他解决方案 取决于.如果是桌面应用程序,则可以使用JNI.但是对于基于Web的应用程序,您必须使用Web服务. 其他解决方案 如果其基于Web的应用程序,您还可以在Java服务器端上使用RMI代理对象, iiop.net 在.net客户端. 它的数量级比Web服务更快.
6 2024-04-19
编程技术问答社区
从C#中调用任何Java方法
是否有使用JNI和C#代码创建一个调用任何给定Java方法的程序的方法? 假设我有一个包含类层次结构的JAR,并且负责加载JVM和这些类,我可以编写一个接收Java方法签名 +参数值的C#程序,并调用Java代码? 请尝试将您的答案限制在自由技术(JNI解决方案)中. 解决方案 ikvm 是一种选择.它在.NET中实现JVM并提供Interop工具. 其他解决方案 IMHO最好的方法是将Java程序作为Web服务运行(或创建基于Java的Web服务界面),只需从C#调用它.
4 2024-04-19
编程技术问答社区
如何将JNI的C#类传入Java或处理这种情况?
我正在尝试从C#调用Java方法,它是从Java称为java的: EgamePay.pay(thisActivity, payAlias, new EgamePayListener() { @Override public void paySuccess(String alias) { } @Override public void payFailed(String alias, int errorInt) { } @Override public void payCancel(String alias) { } }); 前两个参数还可以,但是如何通过c#传递egamepaylistner?简单地创建具有相同函数的C#类是行不通的... 这
10 2024-04-18
编程技术问答社区
使用C#的jni4net与JVM连接时在webapp中出现错误
我正在尝试使用JNI4NET从C#WebApp内部访问简单的Java代码,但是它正在抛出一些错误. 生成了所有代理和DLL以访问Java类. 我在" program.cs"文件中写了用于与JVM连接的代码. 稍后在自定义 Java函数 IE上. display_msg()从 testfunc()调用,可以使用 program.testfunc(). > 我正在附加program.cs文件,并且发生了异常. 另外,我将我的java文件命名为test.java,它在包装中. program.cs using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Logging; using net.sf.jni4net; using System; using mypack; namespace ValidationBot { publ
2 2024-04-17
编程技术问答社区
Unity中的回调监听器-如何在Android中从UnityPlayerActivity调用脚本文件方法
我有一个Android图书馆项目,并在Unity项目中导入了图书馆项目.现在,我想在Unity项目中实现回调,该项目将根据Android Library项目给出的响应执行.我的意思是说,从UnityPlayerActivity(Android Project)调用脚本文件方法. 目前,我正在使用以下代码行,但没有发生: UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage); Main Camera是我的游戏对象. showMessage是脚本文件中的消息名称. Message是消息,将通过Android活动以团结显示. 请检查我的下面代码Unity脚本文件和Android活动. Unity脚本文件: using UnityEngine; using System.Collections; public class scriptfile : MonoBehaviour
14 2024-04-14
编程技术问答社区
从Java中调用C# dll
我是Java开发人员.但是,由于某种原因,我必须借助C#来完成我的任务.我以下提到了用于创建DLL的C#代码.该DLL必须在我的Java程序中使用以完成需要的工作. using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Office.Interop.Word; namespace Yrl.Tracingtool { public class DocxUtil { public Application Jump(string fileName) { object fileNameAsObject = (object)fileName; Application wordApplication; try { wordApplicati
10 2024-04-13
编程技术问答社区
在Java程序中调用C#方法
c#方法由于不同原因而无法使用JNI在JAVA中直接调用.因此,首先,我们必须使用C ++编写C#的包装器,然后创建DLL并通过JAVA中的JNI使用. 我在C ++中调用C#代码时有问题.我将C#.netmodule文件添加到C ++项目.代码在下面粘贴.如果我做错了什么,请指导我. 这是我的托管C ++类UsbSerialNum.h: #using #include #using "UsbSerialNumberCSharp.netmodule" using namespace std; using namespace System; public __gc class UsbSerialNum { public: UsbSerialNumberCSharp::UsbSerialNumberCSharp __gc *t; UsbSerialNum() {
2 2024-04-12
编程技术问答社区
从Java中调用C#代码?
有人有一个很好的解决方案将某些C#代码集成到Java应用程序中吗? 代码很小,因此我可以在Java中重写,但是如果可能的话,我宁愿重复使用代码.不要重复自己,等等. 另外,我知道我可以将C#公开为Web服务或其他任何内容,但是它有一些安全/加密的内容,因此,如果可能的话,我宁愿将其紧密整合. 编辑:它将用于基于服务器的应用程序,因此"下载"另一个运行时是无关紧要的. 解决方案 有一个IL到Java字节码编译器 grasshopper 可能对您有用.我从未尝试过. 我会在Java中重写您的代码 编辑:请注意,蚱hopper似乎不再可用. 其他解决方案 您将使用Java本机接口将您的C#代码拨打到DLL中. 如果它是少量的C#,则将其移植到Java会更容易.如果很多,这可能是做到这一点的好方法. 这是它的高级概述: http://en.wikipedia.org/wiki/java_native/jnative_native_i
8 2024-04-11
编程技术问答社区
从C代码中获取HTML内容
我实施了一个可以将请求发送到远程网站并从中检索数据的Java代码.但是我想要在C中使用相同的代码,但是在C库中找不到太多帮助.任何身体都可以给我任何提示吗? public static String getHTML(String urlToRead) { URL url; HttpURLConnection conn; BufferedReader rd; String line; String result = ""; try { url = new URL(urlToRead); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); rd = new BufferedReader(
18 2024-04-10
编程技术问答社区
用C语言编写一个关键的监听器
我想使用java编写自己的键盘记录器.要编写键盘记录器,我需要一个挂钩文件,该文件将捕获用户的钥匙范围.如何编写此挂钩文件,以便我可以按键用户按下.我不知道如何在c. 中写一个全球关键的听众 解决方案 您要做的事情不会独立于平台.因此,我只能给您提示如何在Windows上进行操作. 在Windows中,这样做的方法是使用Winapi.您可以使用 安装一个挂钩过程,以监视按键消息.有关更多信息,请参阅键盘挂钩过程. 以这种方式,您基本上会告诉Windows每次按键时,都会调用您的预定义函数(将其作为参数发送到SetWindowShookex).您可以在我给您的网页上阅读有关细节的信息. 由于SetWindowShookex功能是特定于Windows的,因此请注意,您不能在Linux或任何其他OS上使用此功能.另外,要做一个基本程序来完成您想要的事情,您实际上并不需要Java.您几乎可以在C/C ++中完成所有操作.
14 2024-04-10
编程技术问答社区
jni-慢速处理在本地
切换到天然以获得更高的性能和处理速度,但不幸的是,我的应用程序太慢了.另外,加载高分辨率图像时,应用程序崩溃. 这是我的完整代码,供您告诉我如何改进它. Java代码: package com.example.invert; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.
8 2024-04-10
编程技术问答社区
JNI--未钉住的基元数组错误
我想在图像处理中实现反转效应.我在Java侧解码颜色通道,我将2D数组传递到C侧,我反转(255-value),然后返回一个已处理的2D数组. 这是我的C代码: #include #include #include #include JNIEXPORT jobjectArray JNICALL Java_com_example_invert_MainActivity_inv (JNIEnv *env, jobject obj, jobjectArray arr, jint w, jint h) { double a[w][h][3]; int i,j,k; double x = 0; ///////////////////READING THE INPUT ARRAY//////////
8 2024-04-10
编程技术问答社区
我有2个非常相似的C语言函数被python和Java调用。我怎样才能把这两个库合并成一个可以从两种语言中调用的库?
基本上,我使用CTYPES和JNI使用CTYPES和JAVA从Python调用了C函数"加密"的2个实现.有人告诉我要乘坐用于Java和Python的两个动态库,并将它们合并到一个可以从两者中调用的静态库中.要澄清,这是使用JNI的JAVA的C函数实现: #include "jniTest.h" #include JNIEXPORT void JNICALL Java_jniTest_passBytes (JNIEnv *env, jclass cls, jbyteArray array) { unsigned char *buffer = (*env)->GetByteArrayElements(env, array, NULL); jsize size = (*env)->GetArrayLength(env,array); for(int i=0; i
8 2024-04-10
编程技术问答社区
在独立的本地库中调用本地库方法
我正在尝试实现此 stackoverflow post . 正如解决方案所建议的那样,我创建了一个独立的本地库.到目前为止,我已经实施了该库. #include "zoom_Main_VideoPlayer.h" #include void *handle; typedef int (*func)(int); // define function prototype func myFunctionName; // some name for the function JNIEXPORT void JNICALL Java_zoom_render_RenderView_naClose(JNIEnv *pEnv, jobject pObj) { handle = dlopen("path to nativelibrary1.so", RTLD_LAZY); myFunctionName = (func)dlsym(handle, "Clo
8 2024-04-10
编程技术问答社区
安卓本地代码中的堆损坏-SEGV_MAPERR
我正在尝试创建一个用于流AES加密的小库,我根据Facebook隐藏项目开始工作( https ://github.com/facebook/conceal ),只是更改一些东西并改进本地周围的包装器,以支持密码. 它正在工作,它可以毫无问题地解密文件,但是当我使用大型流时,我会随机堆内存损坏,经过大量时间调试,我找不到错误. 这是我的代码: https://gist.github.com/frisco82/9782725 我试图找到内存分配或免费问题,但是几乎没有malloc或免费的,jni呼叫应该是安全的,openssl的呼叫也是如此(我已经编译了我自己的,但只要隐藏了,但也没有失败) checkjni不会警告任何事情,尽管上下文处理有点不合格,但似乎并没有破坏(实际上Android Canccrypt似乎使用了类似的东西). 另外,如果有人可以将我指向Android Anitial AES多步(多个更新呼叫)库,我会切换到它. 误差会不时变化,但通常与
4 2024-04-10
编程技术问答社区