Как настроить Google Среда тестирования C++ (gtest) с Visual Studio 2005

np.size(), без оси, дает вам общее количество элементов в матрице. Таким образом, ваши range() будут идти от 0 до 8, а не от 0 до 2.

Вам не нужно использовать np.size() или np.shape() в этом отношении; Эти функции даже не перечислены в документации. Просто используйте атрибут .shape матрицы:

y = np.zeros(x.shape)

for i in range(x.shape[0]):
    for j in range(x.shape[1]):

Существуют более эффективные способы получения выходных данных. Вместо этого вы можете использовать:

def symmetrize(x):
    return x + x.T - np.diag(x.diagonal())

. x.T - это транспонированная матрица , поэтому строки и столбцы меняются местами. x + x.T является суммой исходной матрицы и матрицы транспонирования, поэтому числа на диагонали удваиваются. x.diagonal() - это массив только тех чисел на диагонали, которые можно вычесть, как только вы создали матрицу из этих чисел на диагонали, что и делает np.diag() для вы.

81
задан Boann 21 July 2019 в 22:41
поделиться

4 ответа

Какой сказанный Arlaharen был в основном правильным, кроме он не учел часть, которая объясняет Ваши ошибки компоновщика. В первую очередь, необходимо создать приложение без CRT как библиотека времени выполнения. Необходимо всегда делать это так или иначе, поскольку это действительно упрощает распределение приложения. Если Вы не делаете этого, то всем Вашим пользователям нужна Библиотека времени выполнения Visual C++, установленная, и те, кто не делает будет жаловаться на таинственный DLL, недостающий в их системе... для дополнительного небольшого количества сотни килобайтов, которой это стоит для соединения в CRT статически, Вы сохраняете себя много головной боли позже в поддержке (доверяйте мне на этом - я научился ему на горьком опыте!).

Так или иначе, чтобы сделать это, Вы переходите к свойствам цели-> C/C++-> Генерация кода-> Библиотека времени выполнения, и это должно быть установлено как "Многопоточное" для Вашей Сборки конечных версий и "Многопоточной Отладки" для Вашей Отладочной сборки.

, Так как gtest библиотека создается таким же образом, необходимо удостовериться, что Вы связываетесь против правильной версии она , или иначе компоновщик вытянет в другой копии библиотеки времени выполнения, которая является ошибкой, которую Вы видели (btw, это не должно иметь значения при использовании MFC или не). Необходимо создать gtest как оба режим Debug и Release и сохранить обе копии. Вы затем связываетесь против gtest.lib/gtest_main.lib в Вашей Сборке конечных версий и gtestd.lib/gtest_maind.lib в Вашей Отладочной сборке.

кроме того, необходимо удостовериться, что приложение указывает на каталог, где gtest заголовочные файлы хранятся (в свойствах->, C/C++-> Общий-> Дополнительный Включает Каталоги), но если Вы добрались до ошибки компоновщика, я предполагаю, что Вам уже удалось получить эту корректную часть, или иначе у Вас будет намного больше ошибок компилятора для контакта со сначала.

43
ответ дан Nik Reiman 24 November 2019 в 09:35
поделиться

Создав gtest, это - то, что я сделал:

  1. Добавляют \mypath\gtest-1.0.1\Debug (или Выпуск) к Общей собственности-> Компоновщик-> Общий->, Дополнительные Каталоги Библиотеки
  2. Добавляют gtest.lib и gtest_main.lib к Общей собственности-> Компоновщик-> Вход-> Дополнительные Зависимости

После этого, я просто пишу свои тесты с помощью ТЕСТА или TEST_F как соответствующих и компилирую их вместе с моей основной функцией:

int main(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
4
ответ дан Arlaharen 24 November 2019 в 09:35
поделиться

В Microsoft Visual Studio неверно настроенный тип библиотеки времени выполнения вызывает ошибки связи.

VS 2005 (и 2008) по умолчанию использует многопоточную DLL или многопоточную отладочную DLL. Но библиотека Google Test по умолчанию использует многопоточную или многопоточную среду выполнения отладки.

Итак, выберите подходящий тип библиотеки времени выполнения для библиотеки тестов Google. (в свойствах конфигурации -> Генерация кода -> Библиотека времени выполнения).

2
ответ дан 24 November 2019 в 09:35
поделиться

Я сделал видеоинструкцию по настройке: http://www.youtube.com/watch?v=mzSzwQOmMRs

6
ответ дан 24 November 2019 в 09:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: