简书链接:visualstudio编写jni踩坑
文章字数:300,阅读全文大约需要1分钟
这个东西说简单也简单,但是一不小心就如坑,以至于导致我多次踩坑都没成功,今天总算成功了!
1、新建项目要使用空项目,否则有搞不完的坑等着你。
2、添加java环境目录下的lib和lib\x86目录到工程的属性->配置属性->VC++目录->包含目录。
3、配置属性生成格式为dll,而不是exe,
4、配置输出的为x64而不是x86(你修改你会发现又要重新配置)
5、头文件不用拖拽进去而是先放到项目目录然后添加引用,不然你会发现怎么搞都没法添加头文件,哭晕在厕所。
c代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include<jni.h> #include<stdio.h> #include<iostream> #include<string.h> //#include<> int main() { //cout<<"333"<<endl return 0; } extern "C" JNIEXPORT jstring JNICALL Java_cn_qssq666_autojni_MainActivity_stringFromJNI( JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
|
java代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package cn.qssq666.autojni;
public class MainActivity { // 进入bin根目录 javah -jni cn.qssq666.autojni.MainActivity // Java_cn_qssq666_autojni_MainActivity_stringFromJNI( static { System.load("C:\\Users\\Administrator.DESKTOP-Q7DQAHS\\source\\repos\\ProjectNewDll\\x64\\Debug\\ProjectNewDll.dll"); }
public static native String stringFromJNI();
public static void main(String[] args) { System.out.println("exec " + stringFromJNI()); } }
|

无法成功的,想要下载项目vs源码打个赏,然后我发给你git地址。