99.9RMB 悬赏一技术支持

2021 年 2 月 26 日
 phpIsNumberOne
概述:

使用 C 打包为 Android 的 C-shar(so)动态链库,然后使用 Fltter 的 ffi 调用。现在我实现了函数为 int 类型的相互调用,但是 string(*char)始终有问题。

要求:

将 C 程序打包为 so 动态链库,并能在 Flutter 项目上正常使用,仅 Android 即可,使用 CMake ; C 程序:

#include <stdio.h>
#include <stdlib.h>
int Hello(){
    return 233;
}

char *World(){
    char *r = "1234";
    return r;
}

char *Test(char *str)
{
    return str;
}
说明:
相关资料:
7864 次点击
所在节点    程序员
40 条回复
kosgug
2021 年 2 月 26 日
建议把悬赏金额调低
F281M6Dh8DXpD1g2
2021 年 2 月 26 日
单纯的提问都比你这 99.9 好
20015jjw
2021 年 2 月 26 日
这就跟求包养
一个月只要两包泡面一样...
pekki
2021 年 2 月 26 日
你是不是把程序员的时薪想的太低了。。。
youthfire
2021 年 2 月 26 日
传说中的伤害性不大,侮辱性极强
heyjei
2021 年 2 月 26 日
一杯星巴克或者一杯瑞幸的外卖都比你这个 99.9 更有吸引力啊
hanxiV2EX
2021 年 2 月 26 日
试试这样?记得 free 它

char *World(){
char *tmp = "1234";
char *r = malloc(strlen(tmp)+1);
strcpy(r, tmp);
return r;
}

void FreeWorld(char *){
free(r)
}
wzb0909
2021 年 2 月 26 日
99 元让人看完你的字都不够啊
hanxiV2EX
2021 年 2 月 26 日
建议 @phpIsNumberOne 重新学习 C 语言吧,内存没搞清楚写出来的东西会挂的。
danhahaha
2021 年 2 月 26 日
建议改成 100.99 或者 0.1K 这样看起来比较多
vone
2021 年 2 月 26 日
没八百这活干不了。
hanssx
2021 年 2 月 26 日
99.9 不少了,而且题主提问的方式挺正规的吧?
话说我记得*和后面的之间是不是加个空格更 c ?
mm163
2021 年 2 月 26 日
Flutter 没用过,不清楚。
java 虚拟环境与 c 不是一个空间的,字符串处理应该使用 jni,不能直接返回指针。
pkookp8
2021 年 2 月 26 日
我觉得需要开辟一块共享内存或者普通内存用来操作字符串。world 的 1234 是在字符常量区,可读不可写。test 的内存不知道哪来的,不知道可不可读写

char*不行 int 行,显然是内存问题。但是不懂 flutter,无能为力。试试对入参或出参进行申请内存,使用后释放。或者 socket 交互
anonydmer
2021 年 2 月 26 日
亲,你这样用 C 返回字符串是不行的哦,内存管理错了
hantsy
2021 年 2 月 26 日
9 。9 包邮
Chenamy2017
2021 年 2 月 26 日
好好学学 C 语言吧,指针内存什么的。
你这个 World 函数返回的指针有问题。
phpIsNumberOne
2021 年 2 月 26 日
@hanxiV2EX
@Chenamy2017
见笑了,C 就大学学了下,后面就没深入了
wangjunling
2021 年 2 月 26 日
还不如直接求帮助, 99 悬赏真是侮辱程序员这个行业呀, 理解问题, 解决问题, 至少你的来个三位数呀, 999 或许真有人接
hanxiV2EX
2021 年 2 月 26 日
楼主提问表述确实很清楚,有经验的一眼也就能看到问题所在。然后提供的资料也还全面,这样的提问还是值得称赞的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/756414

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX