Я скачал и скомпилировал CppUnit для компиляции с Visual Studio 2010.
После преобразования я мог загрузить CppUnitLibraries, и он дает мне cppunit.lib и cppunit_dll.lib / dll,После копирования заголовков и библиотек в каталог я запускаю эту команду, чтобы получить много ошибок.
Я обнаружил конфликт библиотек следующим образом
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
Однако следующая команда, похоже, не работает.
cl main.cpp complex.cpp testset.cpp /I"C:\CppUnit\include" /link /libpath:"C:\CppUnit\lib" cppunit.lib /NODEFAULTLIB:library
Что с ними не так?
Это команда, которую я использовал для компиляции / ссылки.
cl main.cpp complex.cpp testset.cpp /I"C:\CppUnit\include" /link /libpath:"C:\CppUnit\lib" cppunit.lib
Это сообщение об ошибке от VS2010.
cppunit.lib(TestResult.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL':
...
node@@@Z) already defined in LIBCMT.lib(typinfo.obj)
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:lib
rary
main.exe : fatal error LNK1169: one or more multiply defined symbols found
ДОБАВЛЕНО
CppUnit предоставляет более старую версию файла проекта (dsw), поэтому мне нужно было вручную преобразовать файл в проект решения 2010.
В случае ошибки источником проблемы была отсутствующая / MD для компиляции.Для другого предупреждения компиляции мне нужно было добавить параметр / EHsc.
cl /EHsc /MD /c /I"./CppUnit/include" main.cpp testset.cpp complex.cpp
link /libpath:"CppUnit/lib" main.obj testset.obj complex.obj cppunit.lib /out:cpptest_static.exe
link /libpath:"CppUnit/lib" main.obj testset.obj complex.obj cppunit_dll.lib /out:cpptest_dynamic.exe