我知道有jython解决方案,但是jython无法加载wtxl和rdxl;它只能加载有限的pip库。所以我想写JNI去做。
主要程序如下: Java< - > JNI< - > C / C ++ Python接口< - >本地Python环境< - >我的html2excel python库
问题是它无法导入html2excel库。我使用C / C ++代码:
int to_excel(const std::string & htmlfile)
{
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('/home/allen/python')");
PyObject *html2excelModule = PyImport_ImportModule("html2excel");
if (!html2excelModule )
{
std::cerr << "Error: open python html2excel failed" << std::endl;
Py_Finalize();
return -1;
}
...
}
以上程序告诉我这个错误
ImportError:没有名为html2excel的模块
html2excel.py位于/ home / allen / python中。从shell运行时没关系。
$python
>>>import sys
>>>sys.path.append('/home/allen/python')
>>>import html2excel
为什么我的JNI库无法导入现有的html2excel模块?提前谢谢!
答案 0 :(得分:0)
错误消息显示rlm_python:EXCEPT :: /usr/lib/python2.7/lib-dynload/_io.so:unfined defined symbol:_Py_ZeroStruct
libpython2.7.so应该在JNI实现中使用dlopen手动加载。
详细解决方案为https://github.com/FreeRADIUS/freeradius-server/pull/415。