有没有办法,在不修改源代码的情况下,调用c++

加盾男爵 2019-07-22 11:21:38
假设有个c++代码文件,名为PrintName.cpp
内容如下

int printName(const std::string& ns , char ch);

int printName(const std::string& ns , char ch){
int indexs = -1;
int cs = ns.size();
for(int i = 0 ; i < cs ; ++i){
if(ns[i] == ch){
indexs = i;
break;
}
}

return indexs;
}


现在安卓需要调用这样一个cpp文件里的函数,有没有办法在不更改这个cpp文件的情况下调用他?

PS:网上看到的教材都是需要更改CPP文件的
签名符号 C/C++ java
V void void
Z jboolean boolean
I jint int
J jlong long
D jdouble double
F jfloat float
B jbyte byte
C jchar char
S jshort short
[Z jbooleanArray boolean[]
[I jintArray int[]
[J jlongArray long[]
[D jdoubleArray double[]
[F jfloatArray float[]
[B jbyteArray byte[]
[C jcharArray char[]
[S jshortArray short[]


...全文
150 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40290083 2019-07-23
  • 打赏
  • 举报
回复
1、你这样的C++代码还不能直接让java调用。因为java的类型和C的类型不同,但是有对应关系。查阅java jni 2、不同的操作系统需要在不同的操作系统平台上进行编译。 3、和CPU的架构(主流有ARM和X86)也有关系,不过你可以任何一种平台上交叉编译到另外的硬件和软件平台。查阅交叉编译。
usecf 2019-07-22
  • 打赏
  • 举报
回复
不是改源码 是通过jni的方式调用cpp中的方法 android java上层通过jni方式调用底层cpp
usecf 2019-07-22
  • 打赏
  • 举报
回复
一般情况下会出现兼容性问题的 你说的这种我不太清楚,但32位和64位的系统编译出的东西都不一样,用的库也不一样的
加盾男爵 2019-07-22
  • 打赏
  • 举报
回复
引用 1 楼 usecf 的回复:
不是改源码 是通过jni的方式调用cpp中的方法 android java上层通过jni方式调用底层cpp
我还想问下,CPU指令集不一样,会不会导致APP无法运行 比如在arm指令集上可以运行的APP,直接拿到neon指令集的手机上,会不会出现问题

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧