Модульные тесты VS в DLL заставляют declspe c (dllexport) - PullRequest
0 голосов
/ 08 апреля 2020

Я написал DLL с inline реализациями. Я довольно новичок в модульных тестах в C ++, поэтому я добавил несколько, как описано здесь , и они просто отлично работали. Утверждения реагировали правильно и т. Д. c.

После извлечения методов в их .cpp по причинам я узнал, что класс должен быть экспортирован (LNK2019, LNK2001). Или, по крайней мере, методы, которые должны быть в состоянии быть проверены. Но экспортные методы ожидают фе. std::string или контейнеры STL в качестве аргумента, или даже члены другого класса вызывают проблемы с C4251, чего я хотел избежать с # 4 из здесь (TL; DR экспортирует также и все остальное - не работает : C2242).

Возможно игнорировать C4251, но тогда тесты не пройдут с исключением C000005 и следующей трассировкой стека:

Error Message:    Exception Code: C0000005 Stack Trace:
        at std::allocator<char>::deallocate() in c:\program files (x86)\microsoft visual studio 12.0\vc\include\xmemory0:line 573
        at std::_Wrap_alloc<std::allocator<char> >::deallocate() in c:\program files (x86)\microsoft visual studio
12.0\vc\include\xmemory0:line 859
        at std::basic_string<char,std::char_traits<char>,std::allocator<char>
::_Tidy() in c:\program files (x86)\microsoft visual studio 12.0\vc\include\xstring:line 2284
        at std::basic_string<char,std::char_traits<char>,std::allocator<char>
::~basic_string<char,std::char_traits<char>,std::allocator<char> >() in c:\program files (x86)\microsoft visual studio
12.0\vc\include\xstring:line 992

Но это развивалось уже в тех направлениях, где я никогда не хотел go. Есть ли решение для моей проблемы? Как тестовый проект конфигурации или STH.? Нужно ли менять рамки теста?

...