当我编译演示main.cpp
时,它失败了因为undefined reference to a_mtk_bt_service_init()
,但我找到了符号
nm -D ./libmtk_bt_service_client.so|grep a_mtk_bt_service_init
,
它的输出是0000000000004098 T a_mtk_bt_service_init
,
我确信编译器通过使用命令aarch64-poky-linux-g++ -print-file-name=libmtk_bt_service_client.so -o main main.cpp
这是演示代码main.cpp
void a_mtk_bt_service_init();
int main()
{
a_mtk_bt_service_init();
return 0;
}
我的编译命令是
aarch64-poky-linux-g++ -mcpu=cortex-a72.cortex-a53+crypto -mtune=cortex-a72.cortex-a53 --sysroot=/home/sundq/code/newT9/T9-Amazon-Sdk/build/tmp/sysroots/aud8516-slc -o build/xx main.cpp -I../../include -lmtk_bt_service_client
答案 0 :(得分:0)
答案在这里Call a C function from C++ code,也就是说,当c ++代码调用c函数时,我们还必须在声明c函数之前添加extern "C"
,
所以我的函数声明应该是这样的
extern "C" void a_mtk_bt_service_init();