草庐IT

c++ - http C++ 库?

全部标签

java - 在 C 中嵌入 Java 库

我将编写一个Java服务器/客户端应用程序,其中客户端并不是真正的客户端(它没有主程序),而是一个库。另外,我要开发一个C模块(fusedriver),需要和服务端交互,所以需要调用客户端的函数。我创建了许多从Java应用程序调用C函数的示例,但没有一个是我需要的。你能给我一个建议或一些提示吗?编辑因为有人不明白我需要什么,我想说得更清楚:我有一个服务器,程序只能使用用Java编写的库与之交互。真正的客户端是用C写的,它必须能够调用库的函数,所以在C中我必须调用java方法 最佳答案 基本上有两种方法可以链接C和Java代码;JNA

java - 不同语言的数组 - 存储引用或原始对象?

在使用数组时,我正在努力思考原始内存在不同语言中的样子。考虑以下Java代码:Stringa="hi";Stringb="there";Stringc="everyone";String[]array={a,b,c};很明显数组保存的是引用,而不是对象;也就是说,内存中有一个包含三个引用的连续数组,每个引用都指向内存中对象所在的某个其他位置。所以对象本身不一定位于三个连续的桶中;而是引用。现在考虑一下:String[]array={"hi","there","everyone"}我想在这种情况下字符串与内存中的所有其他常量一起存在于某个地方,然后数组保存对内存中这些常量的引用?因此,同

java - 使用IPC组合多种语言

这是一个关于软件设计的一般“菜鸟”问题,所以如果看起来含糊不清,我深表歉意,但我真的很感激你的建议。请注意,下面描述的系统纯粹是一个示例,并非我心目中的特定产品。我经常需要结合使用不同语言编写的多个库或实用程序的功能。例如,如果我想为桌面编写一个高性能的音频处理应用程序,我会用C/C++编写。然后,我想添加一个漂亮的GUI。但是我不想学习Qt。我喜欢Adob​​eAir的外观和感觉,并且想使用它。稍后,我需要访问USB设备。但是我的USB库只有一个JavaAPI。我如何将所有这些元素组合在一起,以利用它们的相对优势?显然,我无法将这些不同的元素编译成一个可执行文件。所以我需要单独创建和

java - 如何使用 Java native 接口(interface)将字节数组传递给以 char* 作为参数的 C 函数?

所以我需要使用JNI从java调用C函数。当传入不同的数据类型(创建native变量、头文件、共享库等等)时,我已经能够成功地做到这一点,但无法让它与字节数组一起工作。这是我的C函数:#includevoidencrypt(intsize,unsignedchar*buffer);voiddecrypt(intsize,unsignedchar*buffer);voidencrypt(intsize,unsignedchar*buffer){for(inti=0;i这是我的java代码(我知道在从中生成头文件后,我必须用头文件中的JNI代码替换C函数声明)classTester{pub

java - 将 Java float 转换为 C

我有一个java程序使用包含大量float的对象。事情是出于优化原因,我需要将这段代码的一部分转换成C。为了进行基准测试,我已经在C中转换了所需的方法。事情是不再将对象作为输入,而是将这些float组作为输入。我将这些数组保存在Java文件中,以便从我的C代码轻松访问它。问题是,Javafloat和Cfloat显然完全不同,我在C代码中得到了虚拟值。我没有在互联网上找到任何可以帮助我完成这项任务的资源。Ididfindthis,但它适用于C++,我无权访问这些类。您有什么建议吗?我想我可以开发某种转换器,但这可能需要一些时间,并且可能有更好的在线解决方案。谢谢,编辑:我正在使用Data

java - 序列化要由 Java 等反序列化的 C 结构的最佳方法

目前,我正在使用fread()/fwrite()将C/C++结构中的一些数据保存并加载到文件中。这在这个C应用程序中工作时工作得很好(每当结构更改以将sizeof()参数更新为fread()/fwrite()时我都可以重新编译),但是我如何在事先不知道的情况下将此文件加载到其他程序中C结构的sizeof()s?特别是,我编写了另一个Java应用程序来可视化该C结构二进制文件中包含的数据,但我想要一个关于如何读取该二进制文件的通用解决方案。(而不是我必须在C结构发生变化时手动将sizeof()s放入Java应用程序源中......)我正在考虑序列化为某种类型的文本或XML,但我不确定从哪

java - 这个错误是不是由在 32 位 JVM 中运行的 Java 程序访问 64 位库引起的?

我正在尝试创建一个简单的Java应用程序,它使用JNI调用一些native函数。我遵循了JNI编程指南中的示例,但似乎无法让它们工作。我有以下用Java编写的HelloWorld程序:classHelloWorld{privatenativevoidprint();publicstaticvoidmain(String[]args){newHelloWorld().print();}static{System.load("/home/mike/Desktop/libHelloWorld.so");}}我使用javacHelloWorld.java编译它,就像平常一样。我在HelloWo

java - 将 OpenCV 矩阵循环转换为 JavaCV

不久前拿到了O'Reilly的《学习OpenCV》一书,从那时起,我一直忙于将在那里看到的所有示例代码从OpenCV转换为JavaCV,通常还会进行一些我自己的修改。一直以来,我都在尝试尽可能多地使用纯OpenCV(C语言)代码并避免使用Java。例如,我直接通过JavaCV中的OpenCVhighgui包实现了所有界面元素,而不是通过JavaSwing。通过这样做,我希望在相对较短的时间内学习OpenCV库和一些C,并建立一个有用的函数库,如果我决定以后切换到纯OpenCV,我将能够轻松地将其转换为C。反正我对C的了解很少,在处理指针的时候有时会遇到麻烦。本书推荐以下代码作为迭代3c

java - (数组和字符串)Java 与 C 的区别

关闭。这个问题需要更多focused.它目前不接受答案。想改善这个问题吗?更新问题,使其仅关注一个问题editingthispost.5年前关闭。Improvethisquestion我了解C并且我正在进入Java并且对其处理数组和字符串的方法感到困惑。它与C中的数组和字符串完全不同。请帮助我理解C和Java之间的实际区别(对于字符串和数组)。 最佳答案 在CArraysC中的数组只是访问连续内存空间的语法糖,或者-在这里无耻地粗俗化-指针符号的变体。为了避免分配大块的连续内存并避免自己重新分配内存来操作可变大小的数据,然后您求助于

java - 如何调试 JNI/C 库?

我们这里有一个系统,它使用JavaJNI调用C库中的函数。在Solaris上运行的一切。我在某个地方遇到了字符串编码问题。用C编写的函数返回一个阿拉伯字符,但JNI方法接收一个具有另一种编码的字符串。我已经尝试设置$NLS_LANG和用于编码的vm参数,但没有任何效果。所以我需要能够同时调试C代码和JavaJNI。调试它的最佳方法是什么? 最佳答案 dbx调试器(SunStudio的一部分)可以附加到JVM进程,让您在Java代码和native代码之间单步执行。该功能的代号为“jdbx”,尽管它都是dbx的一部分。它没有得到大力推广