C++使用pybind11编译动态库出错

(learnROS) xlm@xlm-Legion-Y7000P-IAH7:~/fuxian/VoxelNet-pytorch-master/nms/src/build/lib.linux-x86_64-cpython-39$ ldd -r _ext.cpython-39-x86_64-linux-gnu.so
	linux-vdso.so.1 (0x00007ffe6e3c9000)
	libstdc++.so.6 => /home/xlm/anaconda3/envs/learnROS/lib/libstdc++.so.6 (0x00007f19e9240000)
	libgcc_s.so.1 => /home/xlm/anaconda3/envs/learnROS/lib/libgcc_s.so.1 (0x00007f19e9226000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f19e91c0000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f19e8fce000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f19e9477000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f19e8e7f000)
undefined symbol: _ZTVN5torch8autograd12AutogradMetaE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyInstanceMethod_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_ValueError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_IndexError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _Py_NoneStruct	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: THPVariableClass	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_MemoryError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyType_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyByteArray_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCFunction_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_OverflowError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyProperty_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_RuntimeError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _Py_NotImplementedStruct	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyBaseObject_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_TypeError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c1019UndefinedTensorImpl10_singletonE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyFloat_Type	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_SystemError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyExc_ImportError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyTuple_SetItem	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_Repr	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyLong_FromSsize_t	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyByteArray_Size	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_NormalizeException	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyInstanceMethod_New	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyEval_AcquireThread	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_Str	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThreadState_DeleteCurrent	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyGILState_GetThisThreadState	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_GetAttrString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyMem_Free	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_Restore	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c104impl23ExcludeDispatchKeyGuardC1ENS_14DispatchKeySetE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyType_IsSubtype	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyModule_AddObject	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_SetPointer	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyTuple_New	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_IsInstance	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZNK2at6Tensor8data_ptrIfEEPT_v	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyException_SetTraceback	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyNumber_Float	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_Next	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyTuple_Size	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_Format	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_CallObject	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyFloat_AsDouble	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c1010TensorImpl17set_autograd_metaESt10unique_ptrINS_21AutogradMetaInterfaceESt14default_deleteIS2_EE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _Py_Dealloc	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyByteArray_AsString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyNumber_Check	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _PyObject_GetDictPtr	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyUnicode_FromString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: Py_GetVersion	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_SetContext	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyFrame_GetLineNumber	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThread_tss_get	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyBytes_Size	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyException_SetContext	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_Clear	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_HasAttrString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyWeakref_NewRef	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_New	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_SetString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c105ErrorC1ENS_14SourceLocationENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_GetContext	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c106detail14torchCheckFailEPKcS2_jRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThreadState_Get	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_SetItem	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_New	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyMem_Calloc	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_SetAttrString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyGILState_Release	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_GetPointer	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThread_tss_alloc	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _nms	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyBytes_AsString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN2at5zerosEN3c108ArrayRefIlEENS0_13TensorOptionsE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_GetItemWithError	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThread_tss_set	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyType_Ready	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c104impl23ExcludeDispatchKeyGuardD1Ev	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyEval_SaveThread	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_ClearWeakRefs	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_GC_UnTrack	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyEval_GetBuiltins	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_WriteUnraisable	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyModule_Create2	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThread_tss_create	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyFrame_GetBack	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyUnicode_AsEncodedString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_Occurred	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c105ErrorC2ENS_14SourceLocationENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_Copy	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN6caffe28TypeMeta26error_unsupported_typemetaES0_	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyErr_Fetch	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThreadState_New	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _PyThreadState_UncheckedGet	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _PyType_Lookup	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyObject_CallFunctionObjArgs	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_Size	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyThreadState_Clear	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyDict_DelItemString	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZN3c1021AutogradMetaInterfaceD2Ev	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyUnicode_AsUTF8AndSize	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyGILState_Ensure	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCMethod_New	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyCapsule_GetName	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyTuple_GetItem	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyFrame_GetCode	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyException_SetCause	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyUnicode_AsUTF8String	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: _ZNK2at6Tensor8data_ptrIyEEPT_v	(./_ext.cpython-39-x86_64-linux-gnu.so)
undefined symbol: PyBytes_AsStringAndSize	(./_ext.cpython-39-x86_64-linux-gnu.so)
好的,我会尽力回答你的问题。首先,你需要安装pybind11和sympy库。在安装完这两个库之后,你可以按照以下步骤进行操作: 1. 创建一个C++源文件,用于定义你要导出到Python的函数。比如,你可以定义一个名为`calculate_expression`的函数,用于计算一个字符串形式的数学表达式。 2. 使用pybind11库将这个函数导出到Python。你可以使用`PYBIND11_MODULE`宏来定义一个Python模块,并使用`py::def`函数将`calculate_expression`函数导出到该模块中。 3. 在Python中导入你刚刚定义的模块,并调用`calculate_expression`函数来计算表达式。你可以将表达式作为字符串传递给该函数,然后将结果作为Python对象返回。 下面是一个示例代码: ```C++ #include <pybind11/pybind11.h> #include <string> #include <iostream> #include <sstream> #include <iomanip> #include <cmath> #include <stdexcept> #include <sympy/symbol.h> #include <sympy/parsing/sympy_parser.h> namespace py = pybind11; double calculate_expression(const std::string& expr_str) { auto expr = sympy::parse(expr_str); auto sym_expr = sympy::Symbol("x", expr.free_symbols()); return sympy::evalf(expr.subs(sym_expr == 0)); } PYBIND11_MODULE(example, m) { m.doc() = "pybind11 example plugin"; // optional module docstring m.def("calculate_expression", &calculate_expression, "A function to calculate a math expression as a string"); } ``` 在Python中使用这个模块的示例代码: ```Python import example result = example.calculate_expression("2*x**2 + 3*x + 1") print(result) ``` 输出结果为: ```Shell 1.0 ``` 希望这能够对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值