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

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

2023-3-13 21:37
5419

我用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++。方便啊 。要怎么做呢。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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