nativetest.java
public class nativetest
{
static {
System.loadLibrary("nativetest");
}
public native String sayHello(String s);
public static void main(String[] argv)
{
String retval = null;
nativetest nt = new nativetest();
retval = nt.sayHello("Beavis");
System.out.println("Invocation returned " + retval);
}
}
已成功创建nativetest.h文件
nativetest.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class nativetest */
#ifndef _Included_nativetest
#define _Included_nativetest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: nativetest
* Method: sayHello
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_nativetest_sayHello(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
NativeTest.c代码
nativetest.c
include "nativetest.h" /*double quotes tells it to search current directory*/
JNIEXPORT jstring JNICALL Java_nativetest_sayHello (JNIEnv *env, jobject thisobject, jstring js)
{
return js;
}
gcc-I/usr/java/jdk1.7.0_13/include-I/usr/java/jdk1.7.0_13/include/linux-o nativetest.so-shared nativetest.c
已成功创建共享对象文件。
当我执行nativetest时,它显示了以下错误
java-djava.library.path=。nativetest
线程“main”java.lang.unsatifiedLinkError:在java.lang.classloader.loadLibrary(classloader.java:1860)
在java.lang.runtime.loadLibrary0(runtime.java:845)
在java.lang.system.loadLibrary(system.java:1084)
在nativetest(nativetest.java:4)
在java.lang.system.loadLibrary
Thanx提前....
在Linux上,共享库的文件名应该以“lib”开头,即“lib[library_name].so”。
参考:3.1.1.共享库名称
每个共享库都有一个特殊的名称,称为“soname”。soname的前缀是''lib''、库名、短语''.so'',后面跟着一个句点和一个版本号,这个版本号在接口更改时会递增(作为一个特殊的例外,最低级别的C库不以''lib''开头)。一个完全限定的soname包括它所在的目录作为前缀;在一个工作的系统中,一个完全限定的soname只是一个指向共享库“真实名称”的符号链接。
问题内容: 我在python中发现了这种方法链接,但是即使有了它,我也无法理解Python中的方法链接。 这里的目标是两个:解决编码问题并理解方法链接(假设我对可调用对象仍然不是100%自信)。 到问题定义。 我想要一个具有两种方法的类:一种设置对象的参数=“ line”,另一种覆盖“ bar”。 这是我到目前为止所得到的: 不幸的是,用这段代码我可以实现我的目标 但是我想通过编写这段代码获得相同
我正在尝试使用graalVM v20.0.0CE创建一个简单的hello world本地映像。 最初,我收到了一个“本机工具链”错误,但从“x86 Native Tools Command Prompt for VS2017”启动了一个命令行,我就克服了这个障碍。 现在的问题是一串链接器错误: java.lib(jni_util.obj):错误LNK2019:函数jni _打印字符串中引用了未解析
这些是我的系统规格 > Windows 64bit Java 11 64位
考虑以下头文件和源文件: 我在
问题内容: 我正在使用PHP 5,并且听说过面向对象方法中的一项新功能,即“方法链接”。究竟是什么?如何实施? 问题答案: 实际上,它相当简单,您有一系列的mutator方法,它们都返回原始(或其他)对象,这样您就可以继续在返回的对象上调用方法。 输出“ ab” 在线尝试!
问题内容: 我对方法感到惊讶。有一天,我写了一个函数,该函数应该返回Optional: 我错误地认为这会阻止参数表达的任何内部。 现在我想我知道这是非常愚蠢的想法。Java必须先解析参数才能将其传递给调用。 但是我有一个问题。有没有一种很好的方法可以实现我的目标?我想从表达式中获取一些Integer值或null。Null可以是每个表达式之一:或。 我知道我可以将其放在try / catch块中,但