首页 > 解决方案 > 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.libucrtd.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用户很容易发现。请不要误会我的意思,如果我弄错了并且答案不是很明显,我会尽力争取时间。

提前致谢。

标签: randomvisual-studio-2015swigvisual-studio-debuggingc++-standard-library

解决方案


推荐阅读