level 5
KnIfER
楼主
接上贴得到hello_world.so之后。
现展示手机上用qpython调用形如main(int argc,char *argv[])的带array的函数.
原来我想的简单,比如dl.main(3,[“参数1”,“参数2”,“参数3”]),结果发现segmentation报错。
#coding=utf8
from ctypes import *
f = open("/data/user/0/org.qpython.qpy/files/abc.txt","w")
frompath="/storage/emulated/0/hello_world.so"
topath="/data/user/0/org.qpython.qpy/files/lib/hello_world.so"
import os
os.system('cp '+frompath+' '+topath)
dl=CDLL(topath)
dl.main.argtypes=(c_int,POINTER(c_char_p))
p=POINTER(c_char_p)(c_char_p("ajsi"))
p[0]=c_char_p("参数0")
p[1]=c_char_p("参数1")
p[2]=c_char_p("参数3")
print dl.main(3,p)
1.保存代码为runHelloworld.py
2.将hello_world.so复制到sd卡根目录/storage/emulated/0/
3.运行runHelloworld.py





值得一提的是传参过程
dl.main.argtypes=(c_int,POINTER(c_char_p))
p=POINTER(c_char_p)(c_char_p("..."))
这语法也是醉了。。
2017年07月09日 10点07分
1
现展示手机上用qpython调用形如main(int argc,char *argv[])的带array的函数.
原来我想的简单,比如dl.main(3,[“参数1”,“参数2”,“参数3”]),结果发现segmentation报错。
#coding=utf8
from ctypes import *
f = open("/data/user/0/org.qpython.qpy/files/abc.txt","w")
frompath="/storage/emulated/0/hello_world.so"
topath="/data/user/0/org.qpython.qpy/files/lib/hello_world.so"
import os
os.system('cp '+frompath+' '+topath)
dl=CDLL(topath)
dl.main.argtypes=(c_int,POINTER(c_char_p))
p=POINTER(c_char_p)(c_char_p("ajsi"))
p[0]=c_char_p("参数0")
p[1]=c_char_p("参数1")
p[2]=c_char_p("参数3")
print dl.main(3,p)
1.保存代码为runHelloworld.py
2.将hello_world.so复制到sd卡根目录/storage/emulated/0/
3.运行runHelloworld.py





值得一提的是传参过程dl.main.argtypes=(c_int,POINTER(c_char_p))
p=POINTER(c_char_p)(c_char_p("..."))
这语法也是醉了。。