1
resposta

[Dúvida] Instalação Catch2 Visual Studio 2022

Boa noite Vinicius, cara, não tou conseguindo acertar de forma alguma essa instalação do Catch2 no Visual Studio 2022. Tou com muita dificuldade e tive no caso que procurar tutoriais por fora das aulas, mas, mesmo assim tá difícil aqui.

Erros:

símbolo externo não resolvido, "class Catch::Detail::unique_ptr __cdecl Catch::makeTestInvoker(void (__cdecl*)(void))" (?makeTestInvoker@Catch@@YA?AV?$unique_ptr@VITestInvoker@Catch@@@Detail@1@P6AXXZ@Z), referenciado na função "void __cdecl anonymous namespace'::dynamic initializer for 'autoRegistrar1''(void)" (??__EautoRegistrar1@?A0x1fbb7274@@YAXXZ) Definição da função 'getCurrentMutableContext' não encontrada.

Definição da função 'createContext' não encontrada.

Definição da função 'cleanUpContext' não encontrada.

Definição da função 'getCurrentMutableContext' não encontrada.

Definição da função 'cleanUpContext' não encontrada.

Definição da função 'sharedRng' não encontrada.

Definição da função 'throw_test_failure_exception' não encontrada.

Definição da função 'throw_test_skip_exception' não encontrada.

Definição da função 'StringRef' não encontrada.

Definição da função 'operator<' não encontrada.

Definição da função 'operator+=' não encontrada.

Definição da função 'operator<<' não encontrada.

Definição da função 'operator+' não encontrada.

Definição da função 'compare' não encontrada.

A pesquisa por operações nesta macro pode falhar. Considere adicioná-la a um arquivo de dica.

símbolo externo não resolvido, "public: __cdecl Catch::StringRef::StringRef(char const *)" (??0StringRef@Catch@@QEAA@PEBD@Z), referenciado na função "void __cdecl anonymous namespace'::dynamic initializer for 'autoRegistrar1''(void)" (??__EautoRegistrar1@?A0x1fbb7274@@YAXXZ)

símbolo externo não resolvido, "public: __cdecl Catch::AutoReg::AutoReg(class Catch::Detail::unique_ptr,struct Catch::SourceLineInfo const &,class Catch::StringRef,struct Catch::NameAndTags const &)" (??0AutoReg@Catch@@QEAA@V?

$unique_ptr@VITestInvoker@Catch@@@Detail@1@AEBUSourceLineInfo@1@VStringRef@1@AEBUNameAndTags@1@@Z), referenciado na função "void __cdecl anonymous namespace'::dynamic initializer for 'autoRegistrar1''(void)" (??__EautoRegistrar1@?A0x1fbb7274@@YAXXZ) símbolo externo não resolvido, main, referenciado na função "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

4 externo não resolvidos

1 resposta

Felipe, boa noite. Também tive alguns problemas para conseguir rodar o Catch2, mas depois de muita luta consegui. Vou te passar como consegui fazer pra que talvez possa te ajudar.

1 - A indicação da aula é para usar o Catch2, porém no GitHub já está disponível o Catch3. Inclusive ele comenta na aula que a versão 3 ainda está em fase de testes, mas me parece que hoje em dia já é a versão oficial. Encontrei as informações que ele mostra na aula em: https://github.com/catchorg/Catch2/blob/v2.x/docs/tutorial.md#getting-catch2 (Tutorial) e código do hpp que ele copia e cola em um arquivo do projeto está em: https://raw.githubusercontent.com/catchorg/Catch2/v2.x/single_include/catch2/catch.hpp

2 - Adicionei o código em um arquivo chamado catch.hpp, conforme ele indica na aula.

3 - As diretivas são: #define CATCH_CONFIG_MAIN #include "catch.hpp" #include "Avaliador.hpp"

Daí em diante foi só seguir o que foi feito na aula.