random - C++不能在使用 VS 配置的 SWIG-Python 库的调试“独立”应用程序中工作
问题描述
我没有接受过正式的 VS 培训,我通常用它来编写简单的工具来进行研究。(我是教员)。
我目前正在使用 SWIG 为 Python 开发 C++ 库,因此我按照如何从 Visual Studio 2010 中使用 SWIG 创建 DLL 中建议的步骤进行操作?
步号 25 说“除非您构建 Python 本身的调试版本,否则您无法构建调试版本”,但我认为应该能够通过编写一个main
使用 C++ 本身的库来构建 C++ 的调试版本,而无需接触 Python或完全涉及 Python。(如果我错了,请告诉我。)
前段时间我尝试在一个解决方案中创建两个项目(一个用于库,一个用于测试应用程序),但我对结果不太相信,所以我认为是时候尝试配置了。我按照 Microsoft Visual Studio 2015 中重新定义 C/C++ 入口点中的建议和注释(更改了配置类型、扩展名和入口点,并添加了其他依赖项vcruntimed.lib
和ucrtd.lib
,也从构建.i
和排除中排除)修改了我的 SWIG 项目的调试配置_wrap.cxx
文件)。
项目编译并运行,但标准<random>
C++ 库中的方法/函数返回非随机数。更新/澄清:在下面的代码中,
std::normal_distribution<double> rand::distn(0, 1);
std::uniform_real_distribution<double> rand::distu(0, 1);
std::mt19937_64 rand::generator;
void rand::init() {
generator.seed((unsigned long)time(NULL));
}
double rand::u01()
{
return distu(generator);
}
该函数始终u01()
返回0.0
,而从 Python 调用它时,它按预期工作。
我检查了代码并且生成器正在正确播种。此外,该库在 Python 中仍然可以正常工作,所以我倾向于认为这不是编码问题,而是配置问题。
我知道如果我发布了一个最小的工作示例,这将是一个更好的问题,但是在投入时间(我认为我没有)之前,如果有明显的我遗漏的东西,我会徘徊,那就是知识渊博的 VS用户很容易发现。请不要误会我的意思,如果我弄错了并且答案不是很明显,我会尽力争取时间。
提前致谢。
解决方案
推荐阅读
- javascript - 过滤出要显示的计划数据
- c++ - Conda CMake 没有找到 GCC——Windows
- python - Applescript调用包含模块的python文件
- android - 未处理的异常:'package:flutter/src/widgets/navigator.dart':断言失败:第 3018 行 pos 18:'!navigator._debugLocked':不正确
- r - 如何检查值是否存在于 R 中具有相同 ID 的几行中的任何一行中?
- python - PyToch Big Graph 的嵌入数据集中优化器的 state_dict 的目的是什么?
- java - 如何使用 Spring Kafka 处理两个时间戳之间的所有消息?
- excel - Excel 格式化行
- javascript - React jsPdf html2Canvas utf-8 字体问题
- java - 日期格式的 java LocalDate 中的错误