使用C++;java中的库
我是这个论坛的新手,所以如果我不能正确地提出我的问题,请原谅 我需要使用使用C++;java中的库,java,c++,static-libraries,Java,C++,Static Libraries,我是这个论坛的新手,所以如果我不能正确地提出我的问题,请原谅 我需要使用java中的C++(.lib和.h)文件的帮助 我想在java代码中使用.lib文件的方法 函数的原型如下所示: FunctionXYZ(BYTE *Data1, BYTE *Data2, BYTE *Data3, int Data4); 我将使用的环境是centOS 先谢谢你 注:我没有这个.lib的源代码。你可以使用JNI技术,它使你能够与本机代码进行互操作 请参考这个 使用JNI可能是最好的方法。如果你想阅读维基百科
java
中的C++(.lib和.h)
文件的帮助我想在java代码中使用
.lib
文件的方法
函数的原型如下所示:
FunctionXYZ(BYTE *Data1, BYTE *Data2, BYTE *Data3, int Data4);
我将使用的环境是centOS
先谢谢你
注:我没有这个.lib的源代码。你可以使用JNI技术,它使你能够与本机代码进行互操作 请参考这个
使用JNI可能是最好的方法。如果你想阅读维基百科,这里有一个链接:
这是它的文档:要使用
.lib
中的函数,必须为这些库函数创建函数,然后将它们与库链接到.dll
示例:
int example(int a, int b);
JNIEXPORT jint JNICALL Java_MyClass_example (JNIEnv* env, jobject obj, jint a, jint b) {
return (jint) example(a, b);
}
public class MyClass {
public native int example(int a, int b);
}
System.loadLibrary
函数(或类似函数)加载DLLMyClass
你做过任何研究吗?是的,我做过,但没有找到合适的解决方案。我得到了在java中使用.dll的方法,但没有使用.libI的源代码。lib。我仍然可以创建jni包装器吗?你能给我任何帮助链接吗?你不需要
库的源代码,因为lib只是一个包含函数实现的对象。链接库时,链接器会看到这些实现,并将它们链接到代码中使用它们的位置。请参阅编译器/链接器101和我的更新答案。非常感谢。我将继续使用您的指针,并询问是否需要任何澄清,但我没有找到任何传递字节指针的方法,因为传递指针是有效的,但毫无意义。可以将指针作为jint
传递,但不能从Java中取消对它的引用(这意味着,它没有意义,应该只传递值)。