Chinaunix首页 | 论坛 | 博客
  • 博客访问: 436841
  • 博文数量: 89
  • 博客积分: 2713
  • 博客等级: 少校
  • 技术积分: 938
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-18 21:19
个人简介

为了成为自由自在的人而奋斗!

文章分类

全部博文(89)

文章存档

2016年(5)

2015年(9)

2014年(2)

2013年(10)

2012年(1)

2011年(30)

2010年(32)

分类: C/C++

2013-09-19 08:06:12

android 下 子线程 某一个SO函数,传引用值未修改 出来后值程序崩溃 
A.SO里 有一个函数

void Int2HexStr(int i, string &out)

{
     stringstream ss;

    string tmp;
     ss << std::hex <
     ss >>tmp;

    out = tmp;

    cout << tmp<

    cout << out <
}



=============================



子线程里 有函数调用A中的 Int2HexStr函数



...

string a;

Int2HexStr(ivalue,  a); //这个函数崩掉了

...



结果出来后 程序崩溃
=============================

A的头文件声明:A.h

void Int2HexStr(int i, string &out);

原因:stl不能作为动态库接口传递。

问题解决了:
方法1:
   SO不能使用stl 作为接口, 改成静态库问题解决了。
方法2:
  接口不使用string , 改成char * 。  string 属于stl里的类,不能作为动态库间参数传递


这个东东 微软的VS可以通过 设置编译选项 /MD解决,  ndk目前没找着类似的编译选项, 只好改接口了 


具体原因可以参考
http://blog.csdn.net/su317/article/details/1944021
阅读(2100) | 评论(0) | 转发(0) |
0

上一篇:Python基础学习-2

下一篇:pythons基础学习-3

给主人留下些什么吧!~~