gpt4 book ai didi

c++ - 使用由 Boost : did not match C++ signature 生成的 Python 模块

转载 作者:行者123 更新时间:2023-11-28 03:35:50 25 4
gpt4 key购买 nike

我正在使用一个名为 Mitsuba 的软件。它带有一个 Python 实现,用 Boost 包装。 Python 中的这一行:

scene = SceneHandler.loadScene(fileResolver.resolve("model.xml"), paramMap)

产生错误。根据文档,fileResolver.resolve的类型是fs::path,paramMap的类型是ParameterMap。

C++ 代码中的函数签名是:

SceneHandler::loadScene(const fs::path &filename, const ParameterMap &params) 

错误是:

Traceback (most recent call last):
File "...\foo.py", line 22, in <module>
scene = SceneHandler.loadScene(fileResolver.resolve("model.xml"), paramMap)
ArgumentError: Python argument types in
SceneHandler.loadScene(str, StringMap)
did not match C++ signature:
loadScene(class boost::filesystem2::basic_path<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct boost::filesystem2::path_traits>, class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct mitsuba::SimpleStringOrdering,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >)

我可以做哪些进一步的调查?您知道问题出在哪里吗?

最佳答案

不幸的是,不清楚是哪个参数导致了问题。

根据您的错误消息,fileResolver.resolve 的返回类型显然是 str,而不是 boost::filesystem::basic_path。您要查看的是 Mitsuba 定义其 Boost.Python 接口(interface)的位置,以查看是否注册了一个“转换器”,用于将 Python 字符串转换为 boost::fs::path 对象。如果没有,您将不得不弄清楚为该库获取可转换为正确类型的 Python 对象的正确方法是什么。

对于第二个参数,您需要进行基本相同的检查,除非 StringMap 已经是一个 Boost.Python 类型(type(paramMap.__class__) 返回什么?)。看起来 ParameterMap 是一个 typedef for

`std::map<std::string, std::string, mitsuba::SimpleStringOrdering>`

但同样,必须有一个 Boost.Python 转换器已注册,可以从 Python 类型进行转换。

关于c++ - 使用由 Boost : did not match C++ signature 生成的 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com