我的操作系统是Windows 10,我使用G++编译器,VS Code。我尝试将示例 pybind11 文件编译为 Python 对象。 C++ 代码如下所示:
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
namespace py = pybind11;
PYBIND11_MODULE(cmake_module, m) {
m.def("add", &add, R"pbdoc(
Add two numbers
Some other explanation about the add function.
)pbdoc");
};
为了编译项目,我使用 CMake 脚本:
cmake_minimum_required(VERSION 3.30.2)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic -shared")
set(CMAKE_CXX_FLAGS_DEBUG "-Werror -Og")
# Specify the path to pybind11 if it's not installed globally
set(PYBIND11_DIR "C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pybind11")
# Specify the path to the Python interpreter
set(PYBIND11_FINDPYTHON "C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python312\\python.exe")
# Find pybind11
find_package(pybind11 REQUIRED PATHS ${PYBIND11_DIR})
# Find Python components
find_package(Python COMPONENTS Interpreter Development REQUIRED)
# Include directories for Python headers
include_directories(${Python_INCLUDE_DIRS})
# Create the module
set(MODULE_NAME cmake_example)
pybind11_add_module(${MODULE_NAME} src/test.cpp)
成功构建文件后,我在构建文件夹中得到一个 cmake_example.cp312-win_amd64.pyd 文件。在这里,我运行
import cmake_example
,这会导致以下错误:
ImportError: DLL load failed while importing cmake_example: The specified module could not be found.
我使用Python 3.12.4,如果它有某种相关性的话。
我尝试解决问题:
将包含 MinGW 标准库(即
libgcc.dll
和 libstdc++.dll
)的文件夹添加到 PATH
环境变量中,它与包含 gcc.exe
和 g++.exe
的文件夹相同