c++ - Boost-Python:在路径中加载带有unicode字符的python模块

标签 c++ python boost-python

我正在从事游戏项目。我使用 python 2.7.2 编写脚本。我的应用程序在 .exe 的非 unicode 路径下运行良好。但它无法使用 unicode 路径加载脚本 boost::python::import (import_path.c_str());

我试过这个例子 5.3.纯嵌入 http://docs.python.org/extending/embedding.html#embedding-python-in-c

它也不能处理 unicode 路径。我将 python 链接为 dll。 请向我解释如何处理这样的路径。

最佳答案

boost::python::import 需要一个 std::string,因此 import_path 可能会遗漏一些字符。

您必须在多个平台上工作吗?在 Windows 上,您可以调用 GetShortPathName检索 8.3 文件名并使用它来加载您的 dll。

你可以做一个快速测试:

  1. 将您的扩展重命名为“JaiDéjàTestéÇaEtJaiDétestéÇa.pyd”。
  2. 在命令行中,键入dir/x *.pyd 以获取短文件名(JAIDJT~1.PYD 在我的计算机上)
  3. 使用短名称加载您的扩展程序。

+上面的文件名,如果是法语,意思是“我已经测试过了,但我不喜欢它”。这是一首韵律,它让使用 Unicode 变得更有优势 ;)

关于c++ - Boost-Python:在路径中加载带有unicode字符的python模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9099439/

相关文章:

排除范围内的 C++ 随机数

C++ delete [] 对象导致崩溃

python - 如何将表单(国家/城市)中的字符串时区转换为 datetime.tzinfo

python - 计算相对于给定人口的百分位数排名

python - 提升.Python : how to get super() methods called?

c++ - static constexpr 指向函数的指针,编译器之间的区别

c++ - 尝试使用 time.h 库计算两个日期之间的差异

python - 如何使用 Python 求解一对非线性方程?

c++ - 指向 swig(或 Boost::Python)成员的指针

python - char* 的参数转换为 python 以通过 boost.python 在 C++ 中调用 python 函数