1、pom文件添加jna依赖
          <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
                <version>5.14.0</version>
            </dependency>2、注意问题
要实现Java调用C++的动态库,需要使用"extern C"关键字。该关键字是C++之父在设计C++时,为兼容已存在的大量C代码而设定的方法。用该关键字将C++的函数包含起来,即可将C++按C语言的方式进行编译。
3、验证环节 没有extern C的c++文件 文件名 cplus2.cpp
#include<stdio.h>
int sayCplus()
{
    printf("Hello, C++\n");
    return 0;
}4、c++代码头文件 文件名cplus.h
#ifndef _CPLUS_H_
#define _CPLUS_H_
int sayCplus();
#endif5、g++编译代码 cplus.h和cplus2.cpp需在同一个文件夹下
g++ -shared -o mycpp2.dll cplus2.cpp生成动态库 mycpp2.dll文件,吧该文件放到 C:\Windows\System32 目录下
6、java代码调用, mycpp2.dll 动态库加载
package com.pojo.util;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface MyCpp2 extends Library {
    // 加载mycpp2.dll
    MyCpp2 INSTANCE = (MyCpp2) Native.load("mycpp2", MyCpp2.class);
    int sayCplus();
}具体调用 和报错信息
package com.pojo.util;
public class MyCppTest {
    public static void main(String[] args) {
//        int num = MyCpp.INSTANCE.sayCplus();
//        System.out.println(num);
        int num2 = MyCpp2.INSTANCE.sayCplus();
        System.out.println(num2);
    }
}
报错信息
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'sayCplus': 找不到指定的程序。7、正确做法 c++代码添加 extern "C" 修改如下 文件cplus.cpp 如下
#include<stdio.h>
extern "C"
{
int sayCplus()
{
    printf("Hello, C++\n");
    return 0;
}
}
8、cplus.h文件内容不变
9、编译成 mycpp.dll动态库
g++ -shared -o mycpp.dll cplus.cpp生成动态库 mycpp.dll文件,吧该文件放到 C:\Windows\System32 目录下
10、java代码调用,动态加载 mycpp.dll
package com.pojo.util;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface MyCpp extends Library {
    // 加载 mycpp.dll
    MyCpp INSTANCE = (MyCpp) Native.load("mycpp", MyCpp.class);
    int sayCplus();
}具体调用和调用结果
package com.pojo.util;
public class MyCppTest {
    public static void main(String[] args) {
        int num = MyCpp.INSTANCE.sayCplus();
        System.out.println(num);
//        int num2 = MyCpp2.INSTANCE.sayCplus();
//        System.out.println(num2);
    }
}


![[极客大挑战 2019]Http](https://i-blog.csdnimg.cn/direct/a49bfde747004ed69dfc27cd680df080.png)
















