Tag: c

合并不同语言的程序

我有三个程序(一个在C ++ + WinAPI中,另一个在C#.NET中,最后一个在Java中)具有不同的function。 我即将选择一个并实现其他两个的function。 有可能以某种方式合并它们吗? 我需要在一个GUI中,在一个过程中(至少在视觉上)将它们放在一起。 IPC不是问题。 谢谢你的一切

允许用户内联脚本,哪些内联脚本引擎可用于.net或java?

是否有任何开源脚本引擎允许您通过基于Web的界面为您的用户提供在页面上执行轻量脚本的能力? (一些对象/集合将被预先填充,并具有安全性,因此用户无法入侵Web应用程序的内部工作等) 例子: http://wiki.shopify.com/UsingLiquid 另外我认为vBulletin有一些自定义脚本引擎和标签,您可以在其中执行以下操作:

通过JNI部署JRE:jvm.dll不能在Windows上运行或

所以我正在创建一个将Java Runtime Environment(JRE)打包为资源的Win32应用程序。 应用程序将资源提取到磁盘并解压缩。 现在,我想使用此JRE以使用调用API运行Java程序。 一旦我改为程序指向提取的JRE的jvm.dll而不是安装的JRE(这是我复制的),我收到此错误: \ jre1.8.0_31 \ bin \ server \ jvm.dll要么不是设计为在Windows上运行,要么包含错误。 尝试使用原始安装介质再次安装程序,或与系统管理员或软件供应商联系以获取支持。 错误状态0x000012f 我希望对这个问题做的是记录这个错误以及导致它的原因。 如果可能的话,找到一个解决方案,以便我可以引用提取的JRE。 让我举一些具体的环境。 首先,我正在运行Windows 10 Tech Preview。 我的操作系统,我的程序和我从安装中复制的JRE都是64位的。 此外,当我的程序指向已安装的JRE时,它工作正常,问题仅在于复制的JRE。 还有一些代码可以参考我正在做的事情: typedef jint (JNICALL *CreateJVMFunc)(JavaVM **pvm, void **penv, void *args); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { //For brevity I am omitting the extraction/unzipping. //I am […]

如何在JNI中将int转换为String(?)?

我有一个int []数组,我想在JNI中将它的每个元素转换为String (?),最后将它们连接成一个String (?)(包括逗号)。 例如: // java code int testIntArray = new int[]{1, 2, 3}; String arrayString = “”; jni.constructArrayString(testIntArray, arrayString); // the print content should like this: 1,2,3 System.out.println(“ArrayString: ” + arrayString); // jni code JNIEXPORT void JNICALL constructArrayString (JNIEnv *env, jobject obj, jintArray jArr, jstring jstr) { // to do sth. // code […]

将数组从JNI传递到Java

我想访问从JNI到Java的数组(通过创建共享库libtest.so文件) 我这样做如下: JNI代码(C) int size = 5; /* Array Size */ char sample_arr[size] = {1, 2, 3, 4, 5}; /* Array to be accessed in Java */ jbyteArray result_arr = (*env)->NewByteArray(env, size); (*env)->SetByteArrayRegion(env, result_arr, 0, size, sample_arr); jmethodID mid = (*env)->GetMethodID(env, cls, “callback”, “(I)V”); (*env)->CallVoidMethod(env, obj, mid, get_event); 我相信JNI中的jbyte是等效的。 编译上面的代码以形成共享对象libtest.so 。 Java代码 public class Callbacks […]

Java中的内联ASM

自从我开始在Java中嵌入asm用于Intel x86 64位处理器的小项目并无缝运行和编译这些方法(并且可能稍后将这些调用模拟为后退)时,我想知道是否存在已经存在的x86编译器的Java实现。 我也想要支持这些高级指令。 目标是最终有类似的东西: public int myJavaMethod(long value) { doSomeJavaStuff… int result = 0; asm(” push eax”, ” mov eax, value”, ” cmp eax, 0″, ” jne notEqual”, ” mov result, 1″, ” jmp done”, “notEqual: mov result, 0”, “done: pop eax”); doSomeMoreJavaStuff(); return result; } 是)我有的: 英特尔的OPCodes和架构手册(VOL2) 我正式使用JNA编译并运行asm(“nop”)程序部分 目前的挑战: 由于任务的性质,我将尝试访问底层JavaVM堆栈帧 – 这是可能的(记住你得到esp堆栈指针和基本指针ebp,即使是ret op将放在eip指针中的地址)但是将解决方案与某个java […]

OpenCV C ++ calcHist到Java

我正在尝试在我的Android设备上运行一些c ++代码; 但是,我遇到了一个我正在使用的Mat类型的小问题。 我试图转换的代码如下(第二个函数调用第一个): static Mat histc_(const Mat& src, int minVal=0, int maxVal=255, bool normed=false) { Mat result; // Establish the number of bins. int histSize = maxVal-minVal+1; // Set the ranges. float range[] = { static_cast(minVal), static_cast(maxVal+1) }; const float* histRange = { range }; // calc histogram calcHist(&src, 1, 0, Mat(), result, 1, […]

为什么C需要原型函数而Java不需要?

我参加了Java课程,并试图用K&R教我自己。 到目前为止这么好,但我不明白原型的目的。 请参阅以下代码中的2 //评论: #include float convert(int); **//Why is this needed…** main() { int i; for(i = 0; i <= 300; i += 20) printf("F: %3d C: %6.1f\n",i,convert(i)); system("Pause"); return 0; } float convert(int f) **//When we already have this?** { float c = (5.0/9.0) * (f-32.0); return c; } 在Java中,您将声明一个类似于public static float convert(int f)而根本不需要原型。 […]

使用JNA将const char **映射到Java类型

我正在尝试使用Java中的C ++库和JNA。 在库的头文件中,我有以下方法声明: extern “C” void foo(const char** bar); paramterer bar应该传递给foo空,并且foo vill为它分配一个我想在Java中进行检索的值。 应该如何设置相应的Java方法声明(例如,我应该将哪种Java类型映射到),以及如何使用它? 我尝试了以下Java声明: void foo(String bar); void foo(String[] bar); void foo(Pointer bar); 当我调用foo时,它们都会导致以下错误: 线程“main”中的exceptionjava.lang.Error:无效的内存访问

JNI获取exception信息 – 尝试读取或写入受保护的内存

我正在使用以下代码尝试在java中获取类RWException(它扩展了Exception),以便我可以调用方法“getCode()”来检索错误代码(int)并正确处理错误。 我浏览了JNI文档并创建了以下代码…问题是当我尝试调用无参数方法getCode()时,我得到一个AccessViolationexception。 我得到了类的有效句柄和我正在寻找的方法ID。 jstring o = (jstring)envLoc->CallStaticObjectMethod(cls, mid, jstrUser, jstrPass, jstrGroup); jthrowable exc = envLoc->ExceptionOccurred(); if (exc) { // Get the class jclass mvclass = env->GetObjectClass( exc ); // Get method ID for method jmethodID mid = env->GetMethodID(mvclass, “getCode”, “()I”); // Call the method jint code = env->CallIntMethod(mvclass, mid); } 这个代码在使用以下信息调试inVS.NET时给了我一个例外: 尝试读取或写入受保护的内存 UPDATE这是我希望通过上面的JNI代码调用的java方法: public int […]