Unit test'ы MSVS C++ 2005 TeamSuite
От: ksanet  
Дата: 29.10.08 15:57
Оценка:
Убил полдня драгоценного времени на поиски и без результатов
Есть проблема: создаем к примеру консольный проект в студии (на с++) с помощью визарда. Все настройки оставляем по умолчанию. Добавляем класс, например А, опять же визардом. Далее создаем проект Test -> UnitTest. Так добавляем тесты для методов класса А. Так вот, если метод реализован inline прямо в хидере — все нормально, но если реализацию перенести в .cpp файл, сразу возникает ошибка линковки при билде проекта с тестами:

Linking...
UnitTest1.obj : error LNK2028: unresolved token (0A00000D) "public: __thiscall CBase::~CBase(void)" (??1CBase@my1@@$$FQAE@XZ) referenced in function "public: void __clrcall test::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@test@@$$FQ$AAMXXZ)
UnitTest1.obj : error LNK2028: unresolved token (0A00000E) "public: __thiscall CBase::CBase(void)" (??0CBase@my1@@$$FQAE@XZ) referenced in function "public: void __clrcall test::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@test@@$$FQ$AAMXXZ)
UnitTest1.obj : error LNK2019: unresolved external symbol "public: __thiscall CBase::~CBase(void)" (??1CBase@my1@@$$FQAE@XZ) referenced in function "public: void __clrcall test::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@test@@$$FQ$AAMXXZ)
UnitTest1.obj : error LNK2019: unresolved external symbol

в общем не видит реализации он. Настройки опций компиляции (/clr) и референсов не помогают. Не получается не для .exe проектов, не для .dll
В чем секрет? почему последовательность прямых (очевидных) действий не дает результатов?

Может кто-то сталкивался с проблемой или у кого-то есть простенький работающий пример на эту тему? В аналах микрософт есть только примеры для шарпа и то не полные
Re: Unit test'ы MSVS C++ 2005 TeamSuite
От: superlexx  
Дата: 29.10.08 19:08
Оценка:
Просто тест символов не видет. Можно сделать основной проект LIBом, или всё нужное экспортировать, или #include "[...].cpp" в определённых местах.
Re[2]: Unit test'ы MSVS C++ 2005 TeamSuite
От: ksanet  
Дата: 29.10.08 19:51
Оценка:
Здравствуйте, superlexx, Вы писали:

S>Просто тест символов не видет. Можно сделать основной проект LIBом, или всё нужное экспортировать, или #include "[...].cpp" в определённых местах.


К сожалению в реальной (нашей) задаче первый вариант реализовать невозможно, ... как в прочем и последний. А экспорт, это первое что я попробовал, но ничего ровным счетом не изменилось Вероятно это какие-то дот-нетовские заморочки со сборками, хотя и там я ничего не нашел. Должен же быть какой-то "прямой" (хотя в контексте вопроса это и звучит нелепо) метод решения проблемы
Re[3]: Unit test'ы MSVS C++ 2005 TeamSuite
От: superlexx  
Дата: 29.10.08 21:09
Оценка:
Здравствуйте, ksanet, Вы писали:

K>А экспорт, это первое что я попробовал, но ничего ровным счетом не изменилось :(


не знаю, я просто сделал экспорт через __declspec и слинковал import library в тест (явно, не через "Dependencies"). После того, как настроил его на /clr, всё заработало.

А #include "[...].cpp" можно и в зависимости от какого-нибудь IMPLEMENT_INLINE делать, и в тесте его определять.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.