C ++ <random>не работает в отладочном «автономном» приложении для библиотеки SWIG-Python, использующей конфигурации VS - PullRequest
0 голосов
/ 21 января 2019

У меня нет формального обучения VS, и я обычно использую его для программирования простых инструментов для своего исследования.(Я преподаватель).

В настоящее время я работаю над библиотекой C ++ для Python, используя SWIG, поэтому я выполнил шаги, предложенные в Как создать DLL с SWIG из Visual Studio 2010?

Шаг №.25 говорит: « Вы не можете собрать отладочную версию, если не создадите отладочную версию самого Python », но я подумал, что можно создать отладочную версию C ++, написав mainкоторый использует библиотеку самого C ++, не касаясь Python или вообще не включая Python .( Пожалуйста, дайте мне знать, если я ошибаюсь .)

Некоторое время назад я пытался создать два проекта в одном решении (один для библиотеки, один для приложения для тестирования), но яне совсем убедился в результате, поэтому я подумал, что пришло время попробовать конфигурации.Я изменил конфигурацию Debug для своего проекта SWIG, следуя предложениям в Повторное определение точки входа C / C ++ в Microsoft Visual Studio 2015 и комментариям (изменили тип конфигурации, расширение и точку входа и добавили дополнительные зависимости vcruntimed.lib и ucrtd.lib, также исключены из сборки .i и _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 мог бы легко заметить .Пожалуйста, не поймите меня неправильно, если я ошибаюсь и ответ не так очевиден, я действительно постараюсь найти время.

Заранее спасибо.

...