Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
"unresolved external symbol" в юнит тестах под MVS Ultimate 2012
|
|||
|---|---|---|---|
|
#18+
Ни когда раньше юнит тесты не писал, вот решил научиться. Написал пустой класс: UsefullClass.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. UsefullClass.cpp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В том же солюшене создаю проект юнит теста (Native Unit Test Project). К этому проекту добавляю путь к хедеру описанного выше класса, прописываю Код: plaintext 1. . Добавляю к проекту юнит теста "ссылку"(reference) на проект с описанным выше классом. Код в файле юнит теста: Код: plaintext 1. 2. 3. 4. В итоге проект с классом компилится, проект с юнит тестом тоже. Добавляю вызов своего класса в тесте: Код: plaintext 1. 2. 3. 4. 5. Всё, юнит тесты не компилятся: 1>Link: 1> Creating library c:\Users\HellFighter\Documents\Visual Studio 2012\Projects\Project1\Debug\UnitTest.lib and object c:\Users\HellFighter\Documents\Visual Studio 2012\Projects\Project1\Debug\UnitTest.exp 1>unittest1.obj : error LNK2019: unresolved external symbol "public: __thiscall UsefullClass::UsefullClass(void)" (??0UsefullClass@@QAE@XZ) referenced in function "public: void __thiscall UnitTest::UnitTest1::TestUsefullMethod(void)" (?TestUsefullMethod@UnitTest1@UnitTest@@QAEXXZ) 1>unittest1.obj : error LNK2019: unresolved external symbol "public: __thiscall UsefullClass::~UsefullClass(void)" (??1UsefullClass@@QAE@XZ) referenced in function "public: void __thiscall UnitTest::UnitTest1::TestUsefullMethod(void)" (?TestUsefullMethod@UnitTest1@UnitTest@@QAEXXZ) 1>unittest1.obj : error LNK2019: unresolved external symbol "public: int __thiscall UsefullClass::usefullMethod(int)" (?usefullMethod@UsefullClass@@QAEHH@Z) referenced in function "public: void __thiscall UnitTest::UnitTest1::TestUsefullMethod(void)" (?TestUsefullMethod@UnitTest1@UnitTest@@QAEXXZ) 1>c:\Users\HellFighter\Documents\Visual Studio 2012\Projects\Project1\Debug\UnitTest.dll : fatal error LNK1120: 3 unresolved externals Судя по тому что написано проект тестов не видит имплементации методов вызываемого класса. Переносишь имплементацию в .h файл - всё естественно начинает работать как надо. Кстати пробовал убрать reference на проект с классом - ничего не меняется, те похоже это изначально не работает. Как решается данная проблема, без переноса имплементации в хедер? (Гуглил, ничего толкового не нашёл) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 15:45 |
|
||
|
"unresolved external symbol" в юнит тестах под MVS Ultimate 2012
|
|||
|---|---|---|---|
|
#18+
HellFighter, Добавляю к проекту юнит теста "ссылку"(reference) на проект с описанным выше классом. Что это значит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 16:02 |
|
||
|
"unresolved external symbol" в юнит тестах под MVS Ultimate 2012
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Правый клик по проекту -> References. В появившемся окне жму "Add New Reference" и там выбираю свой первый проект. Жму "ОК". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 16:16 |
|
||
|
"unresolved external symbol" в юнит тестах под MVS Ultimate 2012
|
|||
|---|---|---|---|
|
#18+
HellFighterMasterZiv, Правый клик по проекту -> References. В появившемся окне жму "Add New Reference" и там выбираю свой первый проект. Жму "ОК". Я не знаю что это такое, но ты должен добавить при сборке проекта где тест библиотеку или объектный файл, где реализованы тестируемые классы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 12:05 |
|
||
|
"unresolved external symbol" в юнит тестах под MVS Ultimate 2012
|
|||
|---|---|---|---|
|
#18+
MasterZiv, А можно по подробнее как это делается? Если бы писал DLL, то видимо как-то подключить lib файл (в этом случае #pragma comment ???), а если пишу исполняемый файл, то что и как подключать? Или может знаете другой способ писать юнит тесты на C++ под MVS или RAD Studio??? А то я никогда не писал юнит тесты, но думаю что это было бы хорошей практикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2013, 14:41 |
|
||
|
"unresolved external symbol" в юнит тестах под MVS Ultimate 2012
|
|||
|---|---|---|---|
|
#18+
HellFighter, Точно так же, dll или exe все равно. Ты должен добавить библиотеку или объектный файл как параметр линкеру. Как - не знаю в этой твоей студии, думаю, легко найти в нете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2013, 11:42 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38136540&tid=2020465]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 289ms |
| total: | 563ms |

| 0 / 0 |
