首页
社区
课程
招聘
[求助]C++函数让C调用 生成的静态库 。给别人用出现问题。
2023-3-13 21:37 4711

[求助]C++函数让C调用 生成的静态库 。给别人用出现问题。

2023-3-13 21:37
4711

我用C++写了一个.a静态库 。。
函数大概是这样
std::vector<std::string> getIds();

 

然后我有个 函数
extern "C"
{
int getId()
{
auto v = getIds();
if (v[0] == "")
return 0;

1
}

}
代码大概这样
这种就报错了。错误一大堆
error: undefined symbol: std::ndk1::basic_string<char, std::ndk1::char_traits<char>, std::__ndk1::allocator<char> >::append(char const*, unsigned long)
感觉就是不能用STL库。。用了就要出错
我静态库.a给外部的函数必须是C形式的 。其实是给golang用。但是我内部封装肯定用C++。方便啊 。要怎么做呢。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 7072
活跃值: (2715)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxSatan 2023-3-14 00:53
2
0
不同语言,API加__stdcall试试
雪    币: 149
活跃值: (2013)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
saloyun 2023-3-14 09:01
3
0
当然只能用基础类型。你别说给golang调用,就是给不同版本的c++调用都会出问题。
序列化一下,然后返回值和参数都用基础数据类型就行了。
雪    币: 18
活跃值: (2074)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Troy 1 2023-3-14 09:47
4
0
kxSatan 不同语言,API加__stdcall试试
肯定不是调用约定问题 。而且我是64位的 。不存在stdcall的问题 都是fastcall。。
雪    币: 18
活跃值: (2074)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Troy 1 2023-3-14 09:48
5
0
saloyun 当然只能用基础类型。你别说给golang调用,就是给不同版本的c++调用都会出问题。 序列化一下,然后返回值和参数都用基础数据类型就行了。
好吧 。不灵活也将就了 。
游客
登录 | 注册 方可回帖
返回