我正在使用 cppimport,这是一个帮助将 cpp 导入 python 的库。如此处所述:https : //github.com/tbenthompson/cppimport,必须将 setup_pybind11 放入/* */cpp 文件中。
/*
<%
setup_pybind11(cfg)
%>
*/
Run Code Online (Sandbox Code Playgroud)
看来,当我/* */按照文档中的描述将其放入时,从 python 导入 cpp 文件时它没有任何影响。但是,当我不使用/* */. 有什么建议我可以做什么?为什么我必须/* */从 python 中删除它才能正常工作?
它被包装起来/*,*/所以从 C++ 方面来看,它是一个comment。
我猜你的构建自动化正在同一个 C++ 文件上运行其他一些程序。
但后来我不能再从 Visual Studio 运行它了。
也许考虑使用和配置一些更好的构建自动化。我会想到ninja或omake或旧的GNUmake等工具。当然,您可以将它们配置为运行cppimport魔法(请完整阅读其自述文件)。
大多数 C++ 编译器本质上都是命令行驱动的。查看GCC或Clang。两者都存在于 Windows 上(我从未使用过,因为我使用的是 Linux)。
从python导入cpp文件时不起作用。
但你不会 “导入”它。根据README你import cppimport,而不是你的 C++ 文件:
打开一个 python 解释器并运行这些行:
Run Code Online (Sandbox Code Playgroud)>>> import cppimport >>> somecode = cppimport.imp("somecode") #This will pause for a moment to compile the module >>> somecode.square(9)
附注。我的母语不是英语,而且我从未使用过 Python(我更喜欢Guile,它的语义与 Python 的相似,在我看来,它的语法更好、更清晰,请参阅R5RS和SICP了解更多信息)。但是当一个文件被命名时,README我正在完全阅读它。