python 调用C生成 SO库报错:undefined symbol

  使用C++实现某些算法功能后,供python调用时出错:

AttributeError: /..../libHessian4Nii.so: undefined symbol: callVesselSegNii

    通过度娘得知是因为c++编译后的文件会把函数名重命名(这是便于实现重载功能)了,导致脚本调用时找不到函数名。

解决方法为使用 extern "C" 将需要暴露的头文件括起来即可。示例如下:

extern "C"{

  int callVesselSegNii(char* oriNiiFile, char* maskNiiFile, char* save_path);
 
}

重新编译后,调用正常!!!!


版权声明:本文为luckwsm原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。