gpt4 book ai didi

eclipse - JNI : No rule to make target issue

转载 作者:行者123 更新时间:2023-12-04 18:52:52 25 4
gpt4 key购买 nike

我刚刚进入 Eclipse 中的 JNI,并遵循了 this 的 Eclipse 部分。 Ubuntu 中的 JNI 教程。我设法通过使用以下文件夹结构来实现它:

.
└── HelloJNI
├── bin
│   └── HelloJNI.class
├── jni
│   ├── HelloJNI.c
│   ├── HelloJNI.h
│   ├── HelloJNI.o
│   ├── libhello.so
│   └── makefile
└── src
├── HelloJNI.class
└── HelloJNI.java

我在这个项目中的 makefile 如下所示:
# Define a variable for classpath
CLASS_PATH = ../bin

# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)

all : libhello.so

# $@ matches the target, $< matches the first dependancy
libhello.so : HelloJNI.o
gcc -shared -fpic -o $@ $<

# $@ matches the target, $< matches the first dependancy
HelloJNI.o : HelloJNI.c HelloJNI.h
gcc -fpic -I"/usr/lib/jvm/java-6-openjdk-amd64/include" -I"/usr/lib/jvm/java-6-openjdk-amd64/include/linux" -c $< -o $@

# $* matches the target filename without the extension
HelloJNI.h : HelloJNI.class
javah -classpath $(CLASS_PATH) $*

clean :
rm HelloJNI.h HelloJNI.o libhello.so

现在我想在我的 Android Libgdx 项目中复制它。我的核心项目的文件夹结构如下所示:
.
├── bin
│   ├── com
│   │   └── test
│   │   └── mytestgame
│   │   ├── TestGame.class
│   │   └── TextGenerator.class
│   └── TestGame.gwt.xml
├── jni
│   └── makefile
├── libs
│   ├── gdx.jar
│   └── gdx-sources.jar
└── src
├── com
│   └── test
│   └── mytestgame
│   ├── TestGame.java
│   └── TextGenerator.java
└── TestGame.gwt.xml

我在这个项目中的makefile定义为:
# Define a variable for classpath
CLASS_PATH = ../bin

# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)

all : libTextGenerator.so

# $@ matches the target, $< matches the first dependancy
libTextGenerator.so : TextGenerator.o
gcc -shared -fpic -o $@ $<

# $@ matches the target, $< matches the first dependancy
TextGenerator.o : TextGenerator.cpp TextGenerator.h
gcc -fpic -I"/usr/lib/jvm/java-6-openjdk-amd64/include" -I"/usr/lib/jvm/java-6- openjdk-amd64/include/linux" -c $< -o $@

# $* matches the target filename without the extension
TextGenerator.h : TextGenerator.class
javah -classpath $(CLASS_PATH) $*

clean :
rm TextGenerator.h TextGenerator.o libTextGenerator.so
TextGenerator类只能作为一个小类工作,生成一个半随机文本来测试我是否可以在 Java 中使用来自 C++ 的字符串。这个类看起来像这样:
package com.test.mytestgame;

public class TextGenerator {
static{
System.load("TextGenerator"); // Filename libTextGenerator.so
}

/**Empty constructor.*/
public TextGenerator(){
}

/**Returns a semi-not-so-random-text*/
public native String generateText();
}

现在的问题是,当我尝试运行 TextGenerator.h makefile 的一部分,我收到以下错误:
**** Build of configuration Default for project my-fluids-game ****

make TextGenerator.h
make: *** No rule to make target `TextGenerator.class', needed by `TextGenerator.h'. Stop.

**** Build Finished ****

我已尝试更改 CLASS_PATH可变为 ../bin/com/test/mytestgame但这只会产生其他错误。据我了解,使用 -classpath 时可以使用 ../bin旗帜。

谁能告诉我这里哪里错了?我想这是一个相对较小的细节,但我对此的理解目前是有限的。

最佳答案

make不知道类路径。

规则应该是

TextGenerator.h : ../bin/com/test/mytestgame/TextGenerator.class
javah -classpath $(CLASS_PATH) $(<F)

但我真的不知道你将如何使用 javah 生成的包含文件。

关于eclipse - JNI : No rule to make target issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20456321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com