Java利用JavaCPP调用算法示例

网友投稿 312 2022-11-27

Java利用JavaCPP调用算法示例

目录配置liunx 环境系统配置java 项目

配置liunx 环境系统

配置so 文件存放路径

[root@arch2 ~]# cat /etc/ld.so.conf.d/so.conf

/opt/app/tools/so/

从新调用ldconfig 命令

ldconfig

配置java 项目

配置pom 文件

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.jacdong

javacpptest

0.1-SNAPSHOT

${basedir}/cppbuild

UTF-8

true

false

true

${project.artifactId}

linux-x86

linux-x86_64

linux-x86_64

true

org.bytedeco

javacpp

1.5.3

junit

junit

4.12

test

maven-compiler-plugin

maven-jar-plugin

3.1.0

org.apache.maven.plugins

maven-dependency-plugin

2.10

org.bytedeco

javacpp

1.5.3

<properties>${javacpp.platform}

platform.root

${javacpp.platform.root}

platform.compiler

${javacpp.platform.compiler}

platform.extension

${javacpp.platform.extension}

${project.build.outputDirectory}

${basedir}/src/main/resources/linux-x86_64

javacpp.parser

generate-sources

build

false

${project.build.sourceDirectory}

com.jacdong.preset.*

maven-surefire-plugin

2.9

once

target/classes/linux-x86_64

org.codehaus.mojo

exec-maven-plugin

1.1

build-jnilib

process-classes

exec

java

-jar ./libs/javacpp-1.5.jar -Xcompiler -g -Xcompiler -ggdb -nodelete -d target/classes/linux-x86_64 -Xcompiler -I${env.JAVA_HOME}/include -Xcompiler -I${env.JAVA_HOME}/include/linux -Xcompiler -fvisibility=default -Xcompiler -rdynamic -Xcompiler -std=c++11 -classpath target/classes com.jacdong.wrapper.JavaCPPTest

echoPath

install

exec

echo

"sudo cp ${basedir}/target/classes/linux-x86_64/*.so /usr/lib/;sudo ldconfig"

maven-clean-plugin

3.1.0

src/main/java/com/jacdong/rtcm/wrapper/

JavaCPPTestTmp.java

false

org.eclipse.m2e

lifecycle-mapping

1.0.0

org.bytedeco

javacpp

[1.5.3,)

build

org.codehaus.mojo

exec-maven-plugin

[1.1,)

exec

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.jacdong

javacpptest

0.1-SNAPSHOT

${basedir}/cppbuild

UTF-8

true

false

true

${project.artifactId}

linux-x86

linux-x86_64

linux-x86_64

true

org.bytedeco

javacpp

1.5.3

junit

junit

4.12

test

maven-compiler-plugin

maven-jar-plugin

3.1.0

org.apache.maven.plugins

maven-dependency-plugin

2.10

org.bytedeco

javacpp

1.5.3

<properties>${javacpp.platform}

platform.root

${javacpp.platform.root}

platform.compiler

${javacpp.platform.compiler}

platform.extension

${javacpp.platform.extension}

${project.build.outputDirectory}

${basedir}/src/main/resources/linux-x86_64

javacpp.parser

generate-sources

build

false

${project.build.sourceDirectory}

com.jacdong.preset.*

maven-surefire-plugin

2.9

once

target/classes/linux-x86_64

org.codehaus.mojo

exec-maven-plugin

1.1

build-jnilib

process-classes

exec

java

-jar ./libs/javacpp-1.5.jar -Xcompiler -g -Xcompiler -ggdb -nodelete -d target/classes/linux-x86_64 -Xcompiler -I${env.JAVA_HOME}/include -Xcompiler -I${env.JAVA_HOME}/include/linux -Xcompiler -fvisibility=default -Xcompiler -rdynamic -Xcompiler -std=c++11 -classpath target/classes com.jacdong.wrapper.JavaCPPTest

echoPath

install

exec

echo

"sudo cp ${basedir}/target/classes/linux-x86_64/*.so /usr/lib/;sudo ldconfig"

maven-clean-plugin

3.1.0

src/main/java/com/jacdong/rtcm/wrapper/

JavaCPPTestTmp.java

false

org.eclipse.m2e

lifecycle-mapping

1.0.0

org.bytedeco

javacpp

[1.5.3,)

build

org.codehaus.mojo

exec-maven-plugin

[1.1,)

exec

配置文件当中需要主要的几点

false

${project.build.sourceDirectory} com.jacdong.preset.*

java

-jar ./libs/javacpp-1.5.jar -Xcompiler -g -Xcompiler -ggdb -nodelete -d target/classes/linux-x86_64 -Xcompiler -I${env.JAVA_HOME}/include -Xcompiler -I${env.JAVA_HOME}/include/linux -Xcompiler -fvisibility=default -Xcompiler -rdynamic -Xcompiler -std=c++11 -classpath target/classes com.jacdong.wrapper.SingleStationIono

定义自己的map 类

@Properties(target = "com.jacdong.wrapper.JavaCPPTestTmp",

value = {@Platform(include = {"javacpp.h"},

compiler = "cpp11")})

public class JavacppMapper implements InfoMapper{

public void map(InfoMap infoMap) {

infoMap.put(new Info().cppNames("_stdcall").skip())

.put();

}

}

注意点

在利用javacpp 的时候,经常会出现找不到so 文件的情况,这个时候,大家可以把so 文件copy 到/usr/lib 目录下,然后更改相应的权限。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:最先进和广泛使用的测试和诊断软件工具STBSuite简析
下一篇:UVa 12166 Equilibrium Mobile——思路题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~