Java利用JavaCPP调用算法示例

配置liunx 环境系统

配置so 文件存放路径
[root@arch2 ~]# cat /etc/ld.so.conf.d/so.conf 
/opt/app/tools/so/

从新调用ldconfig 命令
ldconfig

配置java 项目

配置pom 文件




 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
                
                    ${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 目录下,然后更改相应的权限。

到此这篇关于Java利用JavaCPP调用算法示例的文章就介绍到这了,更多相关Java JavaCPP调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Java利用JavaCPP调用算法示例)