在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)
2016-05-21 15:25
1141 查看
文章很实用,但是我在vs2012下配置又出现了更奇葩的问题
原文地址:在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)作者:每天up
Buildstarted2013-1-2211:20:11.
InitializeBuildStatus:
Touching".Debugcppunit.unsuccessfulbuild".
ClCompile:
Alloutputsareup-to-date.
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(1151,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srccppunit.Debugcppunit.lib)doesnotmatchtheLibrary'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srccppunitDebugcppunitd.lib).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Lib.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(1153,5):warningMSB8012:TargetName(cppunit)doesnotmatchtheLibrary'sOutputFilepropertyvalue(cppunitd).Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemake
surethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Lib.OutputFile).
原因:工程cppunit的属性设置中,librarian——general——outputfile设置为Debugcppunitd.lib;
以及工程cppunit的属性设置中,configurationproperties——general——targetname设置的是默认以项目名命名生成的lib库文件
以上两个设置的部分不一致。
解决:将工程cppunit的属性设置中,configurationproperties——general——targetname设置为cppunitd。
Lib:
Alloutputsareup-to-date.
cppunit.vcxproj->D:newtrycppunit-1.12.1srccppunit.Debugcppunit.lib
PostBuildEvent:
Description:Copyingtargettolib/
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:Thecommand"copy"D:newtrycppunit-1.12.1srccppunit.Debugcppunit.lib"....libcppunit.lib
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073::VCEnd"exitedwithcode1.
原因:工程cppunit属性设置中,configurationproperties——buildevents——post-buildevents——commandline设置为copy"$(TargetPath)"....lib$(TargetName).lib
解决:将以上设置更改如下
copy"$(TargetDir)$(TargetName).lib"....lib$(TargetName).lib即将lib文件拷贝到上层目录lib中。
BuildFAILED.
TimeElapsed00:00:01.56
------Buildstarted:Project:TestRunner,Configuration:DebugWin32------
Buildstarted2013-1-2211:20:13.
InitializeBuildStatus:
Touching".DebugTestRunner.unsuccessfulbuild".
ClCompile:
Alloutputsareup-to-date.
MsDevCallerListCtrl.cpp
MsDevCallerListCtrl.cpp(67):errorC3505:cannotloadtypelibrary'{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}'
MsDevCallerListCtrl.cpp(67):fatalerrorC1104:fatalerrorimportinglibid:'80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2'
出错的文件是:srcmsvc6testrunnerMsDevCallerListCtrl.cpp。这是由于使用VC8.0编译的缘故,需要修改一下它的源码,打开该文件,找到出错行(#67),将其替换为:
BuildFAILED.
重新编译,工程testrunner,又会出现如下错误!
TimeElapsed00:01:01
------RebuildAllstarted:Project:TestRunner,Configuration:DebugWin32------
Buildstarted2013-1-2214:51:54.
_PrepareForClean:
Deletingfile".DebugTestRunner.lastbuildstate".
InitializeBuildStatus:
Touching".DebugTestRunner.unsuccessfulbuild".
ClCompile:
StdAfx.cpp
_WIN32_WINNTnotdefined.Defaultingto_WIN32_WINNT_MAXVER(seeWinSDKVer.h)
MostRecentTests.cpp
TestRunnerModel.cpp
MfcTestRunner.cpp
ActiveTest.cpp
TreeHierarchyDlg.cpp
TestRunnerDlg.cpp
TestRunnerApp.cpp
ResourceLoaders.cpp
ProgressBar.cpp
MsDevCallerListCtrl.cpp
ListCtrlSetter.cpp
ListCtrlFormatter.cpp
cdxCSizeIconCtrl.cpp
cdxCDynamicWndEx.cpp
cdxCDynamicWnd.cpp
cdxCDynamicDialog.cpp
GeneratingCode...
TestRunnerDSPluginVC6_i.c
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(990,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srcmsvc6testrunner.DebugTestRunner.dll)doesnotmatchtheLinker'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srcmsvc6testrunnerDebugtestrunnerd.dll).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(992,5):warningMSB8012:TargetName(TestRunner)doesnotmatchtheLinker'sOutputFilepropertyvalue(testrunnerd).Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,please
makesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
.TestRunner.def(4):warningLNK4017:DESCRIPTIONstatementnotsupportedforthetargetplatform;ignored
Creatinglibrary.Debugtestrunnerd.libandobject.Debugtestrunnerd.exp
TestRunner.vcxproj->D:newtrycppunit-1.12.1srcmsvc6testrunner.DebugTestRunner.dll
PostBuildEvent:
Description:Copyingtargettolib/
系统找不到指定的文件。
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:Thecommand"copy"D:newtrycppunit-1.12.1srcmsvc6testrunner.DebugTestRunner.dll"......libTestRunner.dll
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:copy"D:newtrycppunit-1.12.1srcmsvc6testrunnerDebugTestRunner.lib"......libTestRunner.lib
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073::VCEnd"exitedwithcode1.
原因:工程TestRunner属性设置中,configurationproperties——general——targetname设置的是默认以项目名命名生成的dll库文件。但是在linker——general——outputfile设置的是Debugtestrunnerd.dll。以上两者的设置不一致。
解决:工程TestRunner属性设置中,configurationproperties——general——targetname设置为testrunnerd
TimeElapsed00:00:01.57
------Buildstarted:Project:cppunit_dll,Configuration:DebugWin32------
Buildstarted2013-1-2211:20:15.
InitializeBuildStatus:
Touching".DebugDllcppunit_dll.unsuccessfulbuild".
ClCompile:
XmlOutputterHook.cpp
XmlOutputter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
XmlElement.cpp
XmlDocument.cpp
Win32DynamicLibraryManager.cpp
UnixDynamicLibraryManager.cpp
TypeInfoHelper.cpp
TextTestRunner.cpp
TextTestResult.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TextTestProgressListener.cpp
TextOutputter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestSuiteBuilderContext.cpp
D:newtrycppunit-1.12.1includecppunit/extensions/TestNamer.h(82):warningC4251:'CppUnit::TestNamer::m_fixtureName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestNamer'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestSuite.cpp
TestSuccessListener.cpp
TestSetUp.cpp
TestRunner.cpp
TestResultCollector.cpp
TestResult.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
d:newtrycppunit-1.12.1srccppunitProtectorContext.h(31):warningC4251:'CppUnit::ProtectorContext::m_shortDescription':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::ProtectorContext'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestPlugInDefaultImpl.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/PlugInParameters.h(27):warningC4251:'CppUnit::PlugInParameters::m_commandLine':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::PlugInParameters'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(27):warningC4275:nondll-interfacestruct'CppUnitTestPlugIn'usedasbasefordll-interfaceclass'CppUnit::TestPlugInDefaultImpl'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugIn.h(44):seedeclarationof'CppUnitTestPlugIn'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(26):seedeclarationof'CppUnit::TestPlugInDefaultImpl'
TestPath.cpp
GeneratingCode...
Compiling...
TestNamer.cpp
D:newtrycppunit-1.12.1includecppunit/extensions/TestNamer.h(82):warningC4251:'CppUnit::TestNamer::m_fixtureName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestNamer'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestLeaf.cpp
TestFailure.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestFactoryRegistry.cpp
TestDecorator.cpp
TestComposite.cpp
D:newtrycppunit-1.12.1includecppunit/TestComposite.h(39):warningC4251:'CppUnit::TestComposite::m_name':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestComposite'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestCaseDecorator.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/TestCase.h(50):warningC4251:'CppUnit::TestCase::m_name':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestCase'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestCase.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/TestCase.h(50):warningC4251:'CppUnit::TestCase::m_name':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestCase'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestAssert.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
Test.cpp
SynchronizedObject.cpp
StringTools.cpp
SourceLine.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
RepeatedTest.cpp
ProtectorChain.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
Protector.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
d:newtrycppunit-1.12.1srccppunitProtectorContext.h(31):warningC4251:'CppUnit::ProtectorContext::m_shortDescription':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::ProtectorContext'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
PlugInParameters.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/PlugInParameters.h(27):warningC4251:'CppUnit::PlugInParameters::m_commandLine':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::PlugInParameters'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
PlugInManager.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(27):warningC4275:nondll-interfacestruct'CppUnitTestPlugIn'usedasbasefordll-interfaceclass'CppUnit::TestPlugInDefaultImpl'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugIn.h(44):seedeclarationof'CppUnitTestPlugIn'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(26):seedeclarationof'CppUnit::TestPlugInDefaultImpl'
Message.cpp
Exception.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
GeneratingCode...
Compiling...
DynamicLibraryManagerException.cpp
DynamicLibraryManager.cpp
DllMain.cpp
DefaultProtector.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
CompilerOutputter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/CompilerOutputter.h(138):warningC4251:'CppUnit::CompilerOutputter::m_locationFormat':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::CompilerOutputter'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
BriefTestProgressListener.cpp
BeosDynamicLibraryManager.cpp
Asserter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
AdditionalMessage.cpp
GeneratingCode...
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(990,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srccppunit.DebugDllcppunit_dll.dll)doesnotmatchtheLinker'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srccppunitDebugDllcppunitd_dll.dll).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(992,5):warningMSB8012:TargetName(cppunit_dll)doesnotmatchtheLinker'sOutputFilepropertyvalue(cppunitd_dll).Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,please
makesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
Link:
Creatinglibrary.DebugDllcppunitd_dll.libandobject.DebugDllcppunitd_dll.exp
LinkEmbedManifest:
Creatinglibrary.DebugDllcppunitd_dll.libandobject.DebugDllcppunitd_dll.exp
cppunit_dll.vcxproj->D:newtrycppunit-1.12.1srccppunit.DebugDllcppunit_dll.dll
PostBuildEvent:
Description:Copyingtargettolib/
系统找不到指定的文件。
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:Thecommand"copy"D:newtrycppunit-1.12.1srccppunit.DebugDllcppunit_dll.dll"....libcppunit_dll.dll
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:copy"D:newtrycppunit-1.12.1srccppunitDebugDllcppunit_dll.lib"....libcppunit_dll.lib
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073::VCEnd"exitedwithcode1.
原因:在linkergeneraloutputfile中,生成文件的名字为不带“d”的名字,在post-build中,会copy错误。修改办法:
(1)GeneralTargetName中,$(ProjectName)-->$(ProjectName)d,而cppunit_dll工程比较特殊,它需要在cppunitd_dll中间加"d",没办法使用$(ProjectName),可直接写为cppunitd_dll
(2)LinkerGeneralOutputFiles中,DebugDllcppunit_dll.dll-->DebugDll$(TargetName)$(TargetExt)
(3)LinkerAdvancedImportLibraries中,.DebugDllcppunit_dll.lib-->.DebugDll$(TargetName).lib
(4)PostBuildEventCommandLine中:改为:
copy"$(TargetPath)"....lib$(TargetName)$(TargetExt)
copy"$(TargetDir)$(TargetName).lib"....lib$(TargetName).lib
即将dll和lib文件拷贝到上层目录lib中。
BuildFAILED.
TimeElapsed00:00:55.70
------Buildstarted:Project:DllPlugInTester,Configuration:DebugWin32------
Buildstarted2013-1-2211:21:11.
InitializeBuildStatus:
Creating".DebugDllDllPlugInTester.unsuccessfulbuild"because"AlwaysCreate"wasspecified.
ClCompile:
DllPlugInTester.cpp
D:newtrycppunit-1.12.1includecppunit/CompilerOutputter.h(138):warningC4251:'CppUnit::CompilerOutputter::m_locationFormat':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::CompilerOutputter'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(27):warningC4275:nondll-interfacestruct'CppUnitTestPlugIn'usedasbasefordll-interfaceclass'CppUnit::TestPlugInDefaultImpl'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugIn.h(44):seedeclarationof'CppUnitTestPlugIn'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(26):seedeclarationof'CppUnit::TestPlugInDefaultImpl'
CommandLineParser.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/PlugInParameters.h(27):warningC4251:'CppUnit::PlugInParameters::m_commandLine':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::PlugInParameters'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
GeneratingCode...
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(990,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srcDllPlugInTester.DebugDllDllPlugInTester.exe)doesnotmatchtheLinker'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srcDllPlugInTesterDebugDllDllPlugInTesterd_dll.exe).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(992,5):warningMSB8012:TargetName(DllPlugInTester)doesnotmatchtheLinker'sOutputFilepropertyvalue(DllPlugInTesterd_dll).Thismaycauseyourprojecttobuildincorrectly.Tocorrect
this,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
LINK:fatalerrorLNK1181:cannotopeninputfile'cppunitd_dll.lib'
BuildFAILED.
TimeElapsed00:00:04.54
------Buildstarted:Project:TestPlugInRunner,Configuration:DebugWin32------
Buildstarted2013-1-2211:21:15.
InitializeBuildStatus:
Creating".DebugTestPlugInRunner.unsuccessfulbuild"because"AlwaysCreate"wasspecified.
CustomBuild:
UpdatingD:newtrycppunit-1.12.1libcppunitd_dll.dll
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(151,5):errorMSB6006:"cmd.exe"exitedwithcode1.
解决:该工程还不完善
BuildFAILED.
TimeElapsed00:00:00.17
==========Build:0succeeded,5failed,0up-to-date,0skipped==========
原文地址:
2013-1-2211:20:11.
------Buildstarted:Project:cppunit,Configuration:DebugWin32------Buildstarted2013-1-2211:20:11.
InitializeBuildStatus:
Touching".Debugcppunit.unsuccessfulbuild".
ClCompile:
Alloutputsareup-to-date.
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(1151,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srccppunit.Debugcppunit.lib)doesnotmatchtheLibrary'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srccppunitDebugcppunitd.lib).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Lib.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(1153,5):warningMSB8012:TargetName(cppunit)doesnotmatchtheLibrary'sOutputFilepropertyvalue(cppunitd).Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemake
surethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Lib.OutputFile).
原因:工程cppunit的属性设置中,librarian——general——outputfile设置为Debugcppunitd.lib;
以及工程cppunit的属性设置中,configurationproperties——general——targetname设置的是默认以项目名命名生成的lib库文件
以上两个设置的部分不一致。
解决:将工程cppunit的属性设置中,configurationproperties——general——targetname设置为cppunitd。
Lib:
Alloutputsareup-to-date.
cppunit.vcxproj->D:newtrycppunit-1.12.1srccppunit.Debugcppunit.lib
PostBuildEvent:
Description:Copyingtargettolib/
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:Thecommand"copy"D:newtrycppunit-1.12.1srccppunit.Debugcppunit.lib"....libcppunit.lib
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073::VCEnd"exitedwithcode1.
原因:工程cppunit属性设置中,configurationproperties——buildevents——post-buildevents——commandline设置为copy"$(TargetPath)"....lib$(TargetName).lib
解决:将以上设置更改如下
copy"$(TargetDir)$(TargetName).lib"....lib$(TargetName).lib即将lib文件拷贝到上层目录lib中。
BuildFAILED.
TimeElapsed00:00:01.56
------Buildstarted:Project:TestRunner,Configuration:DebugWin32------
Buildstarted2013-1-2211:20:13.
InitializeBuildStatus:
Touching".DebugTestRunner.unsuccessfulbuild".
ClCompile:
Alloutputsareup-to-date.
MsDevCallerListCtrl.cpp
MsDevCallerListCtrl.cpp(67):errorC3505:cannotloadtypelibrary'{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}'
MsDevCallerListCtrl.cpp(67):fatalerrorC1104:fatalerrorimportinglibid:'80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2'
出错的文件是:srcmsvc6testrunnerMsDevCallerListCtrl.cpp。这是由于使用VC8.0编译的缘故,需要修改一下它的源码,打开该文件,找到出错行(#67),将其替换为:
#if_MSC_VER>=1400//VC++8ormore //Thefollowing#importimportsEnvDTEbasedonitsLIBID. #import"libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2"version("8.0")lcid("0")raw_interfaces_onlynamed_guids //Thefollowing#importimportsEnvDTE80basedonitsLIBID. #import"libid:1A31287A-4D7D-413e-8E32-3B374931BD89"version("8.0")lcid("0")raw_interfaces_onlynamed_guids #else//vc7 #import"libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2"version("7.0")lcid("0")raw_interfaces_onlynamed_guids #endif |
重新编译,工程testrunner,又会出现如下错误!
TimeElapsed00:01:01
------RebuildAllstarted:Project:TestRunner,Configuration:DebugWin32------
Buildstarted2013-1-2214:51:54.
_PrepareForClean:
Deletingfile".DebugTestRunner.lastbuildstate".
InitializeBuildStatus:
Touching".DebugTestRunner.unsuccessfulbuild".
ClCompile:
StdAfx.cpp
_WIN32_WINNTnotdefined.Defaultingto_WIN32_WINNT_MAXVER(seeWinSDKVer.h)
MostRecentTests.cpp
TestRunnerModel.cpp
MfcTestRunner.cpp
ActiveTest.cpp
TreeHierarchyDlg.cpp
TestRunnerDlg.cpp
TestRunnerApp.cpp
ResourceLoaders.cpp
ProgressBar.cpp
MsDevCallerListCtrl.cpp
ListCtrlSetter.cpp
ListCtrlFormatter.cpp
cdxCSizeIconCtrl.cpp
cdxCDynamicWndEx.cpp
cdxCDynamicWnd.cpp
cdxCDynamicDialog.cpp
GeneratingCode...
TestRunnerDSPluginVC6_i.c
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(990,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srcmsvc6testrunner.DebugTestRunner.dll)doesnotmatchtheLinker'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srcmsvc6testrunnerDebugtestrunnerd.dll).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(992,5):warningMSB8012:TargetName(TestRunner)doesnotmatchtheLinker'sOutputFilepropertyvalue(testrunnerd).Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,please
makesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
.TestRunner.def(4):warningLNK4017:DESCRIPTIONstatementnotsupportedforthetargetplatform;ignored
Creatinglibrary.Debugtestrunnerd.libandobject.Debugtestrunnerd.exp
TestRunner.vcxproj->D:newtrycppunit-1.12.1srcmsvc6testrunner.DebugTestRunner.dll
PostBuildEvent:
Description:Copyingtargettolib/
系统找不到指定的文件。
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:Thecommand"copy"D:newtrycppunit-1.12.1srcmsvc6testrunner.DebugTestRunner.dll"......libTestRunner.dll
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:copy"D:newtrycppunit-1.12.1srcmsvc6testrunnerDebugTestRunner.lib"......libTestRunner.lib
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073::VCEnd"exitedwithcode1.
原因:工程TestRunner属性设置中,configurationproperties——general——targetname设置的是默认以项目名命名生成的dll库文件。但是在linker——general——outputfile设置的是Debugtestrunnerd.dll。以上两者的设置不一致。
解决:工程TestRunner属性设置中,configurationproperties——general——targetname设置为testrunnerd
TimeElapsed00:00:01.57
------Buildstarted:Project:cppunit_dll,Configuration:DebugWin32------
Buildstarted2013-1-2211:20:15.
InitializeBuildStatus:
Touching".DebugDllcppunit_dll.unsuccessfulbuild".
ClCompile:
XmlOutputterHook.cpp
XmlOutputter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
XmlElement.cpp
XmlDocument.cpp
Win32DynamicLibraryManager.cpp
UnixDynamicLibraryManager.cpp
TypeInfoHelper.cpp
TextTestRunner.cpp
TextTestResult.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TextTestProgressListener.cpp
TextOutputter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestSuiteBuilderContext.cpp
D:newtrycppunit-1.12.1includecppunit/extensions/TestNamer.h(82):warningC4251:'CppUnit::TestNamer::m_fixtureName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestNamer'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestSuite.cpp
TestSuccessListener.cpp
TestSetUp.cpp
TestRunner.cpp
TestResultCollector.cpp
TestResult.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
d:newtrycppunit-1.12.1srccppunitProtectorContext.h(31):warningC4251:'CppUnit::ProtectorContext::m_shortDescription':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::ProtectorContext'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestPlugInDefaultImpl.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/PlugInParameters.h(27):warningC4251:'CppUnit::PlugInParameters::m_commandLine':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::PlugInParameters'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(27):warningC4275:nondll-interfacestruct'CppUnitTestPlugIn'usedasbasefordll-interfaceclass'CppUnit::TestPlugInDefaultImpl'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugIn.h(44):seedeclarationof'CppUnitTestPlugIn'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(26):seedeclarationof'CppUnit::TestPlugInDefaultImpl'
TestPath.cpp
GeneratingCode...
Compiling...
TestNamer.cpp
D:newtrycppunit-1.12.1includecppunit/extensions/TestNamer.h(82):warningC4251:'CppUnit::TestNamer::m_fixtureName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestNamer'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestLeaf.cpp
TestFailure.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestFactoryRegistry.cpp
TestDecorator.cpp
TestComposite.cpp
D:newtrycppunit-1.12.1includecppunit/TestComposite.h(39):warningC4251:'CppUnit::TestComposite::m_name':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestComposite'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestCaseDecorator.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/TestCase.h(50):warningC4251:'CppUnit::TestCase::m_name':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestCase'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestCase.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/TestCase.h(50):warningC4251:'CppUnit::TestCase::m_name':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::TestCase'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
TestAssert.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
Test.cpp
SynchronizedObject.cpp
StringTools.cpp
SourceLine.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
RepeatedTest.cpp
ProtectorChain.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
Protector.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
d:newtrycppunit-1.12.1srccppunitProtectorContext.h(31):warningC4251:'CppUnit::ProtectorContext::m_shortDescription':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::ProtectorContext'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
PlugInParameters.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/PlugInParameters.h(27):warningC4251:'CppUnit::PlugInParameters::m_commandLine':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::PlugInParameters'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
PlugInManager.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(27):warningC4275:nondll-interfacestruct'CppUnitTestPlugIn'usedasbasefordll-interfaceclass'CppUnit::TestPlugInDefaultImpl'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugIn.h(44):seedeclarationof'CppUnitTestPlugIn'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(26):seedeclarationof'CppUnit::TestPlugInDefaultImpl'
Message.cpp
Exception.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
GeneratingCode...
Compiling...
DynamicLibraryManagerException.cpp
DynamicLibraryManager.cpp
DllMain.cpp
DefaultProtector.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
CompilerOutputter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/CompilerOutputter.h(138):warningC4251:'CppUnit::CompilerOutputter::m_locationFormat':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::CompilerOutputter'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
BriefTestProgressListener.cpp
BeosDynamicLibraryManager.cpp
Asserter.cpp
D:newtrycppunit-1.12.1includecppunit/SourceLine.h(56):warningC4251:'CppUnit::SourceLine::m_fileName':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::SourceLine'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/Exception.h(82):warningC4251:'CppUnit::Exception::m_whatMessage':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::Exception'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
AdditionalMessage.cpp
GeneratingCode...
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(990,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srccppunit.DebugDllcppunit_dll.dll)doesnotmatchtheLinker'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srccppunitDebugDllcppunitd_dll.dll).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(992,5):warningMSB8012:TargetName(cppunit_dll)doesnotmatchtheLinker'sOutputFilepropertyvalue(cppunitd_dll).Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,please
makesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
Link:
Creatinglibrary.DebugDllcppunitd_dll.libandobject.DebugDllcppunitd_dll.exp
LinkEmbedManifest:
Creatinglibrary.DebugDllcppunitd_dll.libandobject.DebugDllcppunitd_dll.exp
cppunit_dll.vcxproj->D:newtrycppunit-1.12.1srccppunit.DebugDllcppunit_dll.dll
PostBuildEvent:
Description:Copyingtargettolib/
系统找不到指定的文件。
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:Thecommand"copy"D:newtrycppunit-1.12.1srccppunit.DebugDllcppunit_dll.dll"....libcppunit_dll.dll
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073:copy"D:newtrycppunit-1.12.1srccppunitDebugDllcppunit_dll.lib"....libcppunit_dll.lib
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(113,5):errorMSB3073::VCEnd"exitedwithcode1.
原因:在linkergeneraloutputfile中,生成文件的名字为不带“d”的名字,在post-build中,会copy错误。修改办法:
(1)GeneralTargetName中,$(ProjectName)-->$(ProjectName)d,而cppunit_dll工程比较特殊,它需要在cppunitd_dll中间加"d",没办法使用$(ProjectName),可直接写为cppunitd_dll
(2)LinkerGeneralOutputFiles中,DebugDllcppunit_dll.dll-->DebugDll$(TargetName)$(TargetExt)
(3)LinkerAdvancedImportLibraries中,.DebugDllcppunit_dll.lib-->.DebugDll$(TargetName).lib
(4)PostBuildEventCommandLine中:改为:
copy"$(TargetPath)"....lib$(TargetName)$(TargetExt)
copy"$(TargetDir)$(TargetName).lib"....lib$(TargetName).lib
即将dll和lib文件拷贝到上层目录lib中。
BuildFAILED.
TimeElapsed00:00:55.70
------Buildstarted:Project:DllPlugInTester,Configuration:DebugWin32------
Buildstarted2013-1-2211:21:11.
InitializeBuildStatus:
Creating".DebugDllDllPlugInTester.unsuccessfulbuild"because"AlwaysCreate"wasspecified.
ClCompile:
DllPlugInTester.cpp
D:newtrycppunit-1.12.1includecppunit/CompilerOutputter.h(138):warningC4251:'CppUnit::CompilerOutputter::m_locationFormat':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::CompilerOutputter'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(27):warningC4275:nondll-interfacestruct'CppUnitTestPlugIn'usedasbasefordll-interfaceclass'CppUnit::TestPlugInDefaultImpl'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugIn.h(44):seedeclarationof'CppUnitTestPlugIn'
D:newtrycppunit-1.12.1includecppunit/plugin/TestPlugInDefaultImpl.h(26):seedeclarationof'CppUnit::TestPlugInDefaultImpl'
CommandLineParser.cpp
D:newtrycppunit-1.12.1includecppunit/plugin/PlugInParameters.h(27):warningC4251:'CppUnit::PlugInParameters::m_commandLine':class'std::basic_string<_Elem,_Traits,_Ax>'needstohavedll-interfacetobeusedbyclientsofclass'CppUnit::PlugInParameters'
with
[
_Elem=char,
_Traits=std::char_traits,
_Ax=std::allocator
]
GeneratingCode...
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(990,5):warningMSB8012:TargetPath(D:newtrycppunit-1.12.1srcDllPlugInTester.DebugDllDllPlugInTester.exe)doesnotmatchtheLinker'sOutputFilepropertyvalue(D:newtrycppunit-1.12.1srcDllPlugInTesterDebugDllDllPlugInTesterd_dll.exe).
Thismaycauseyourprojecttobuildincorrectly.Tocorrectthis,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppBuild.targets(992,5):warningMSB8012:TargetName(DllPlugInTester)doesnotmatchtheLinker'sOutputFilepropertyvalue(DllPlugInTesterd_dll).Thismaycauseyourprojecttobuildincorrectly.Tocorrect
this,pleasemakesurethat$(OutDir),$(TargetName)and$(TargetExt)propertyvaluesmatchthevaluespecifiedin%(Link.OutputFile).
LINK:fatalerrorLNK1181:cannotopeninputfile'cppunitd_dll.lib'
BuildFAILED.
TimeElapsed00:00:04.54
------Buildstarted:Project:TestPlugInRunner,Configuration:DebugWin32------
Buildstarted2013-1-2211:21:15.
InitializeBuildStatus:
Creating".DebugTestPlugInRunner.unsuccessfulbuild"because"AlwaysCreate"wasspecified.
CustomBuild:
UpdatingD:newtrycppunit-1.12.1libcppunitd_dll.dll
系统找不到指定的文件。
C:ProgramFilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(151,5):errorMSB6006:"cmd.exe"exitedwithcode1.
解决:该工程还不完善
BuildFAILED.
TimeElapsed00:00:00.17
==========Build:0succeeded,5failed,0up-to-date,0skipped==========
C++单元测试cppunit问题fatalerrorC1083:Cannotopenincludefile:'cppunit/Portability.h':Nosuchfileordirectory,
解决办法:在工程属性的Vc++directories——include和library中添加cppunit的include和lib的路径
我用vs2008编写一个单元测试的控制台用来测试我写的Dll是否可用,但编译老是通不过,出现fatalerrorC1083:Cannotopenincludefile:'cppunit/Portability.h':Nosuchfileordirectory,我已经把cppunit整个都拷到了编译的文件夹里了,这到底是什么原因呢?我把'cppunit/Portability.h'改成'../cppunit/Portability.h'出现了类似的错误,等我把全部相关的都改完就变成了很多“errorLNK2019:unresolvedexternalsymbol..................”,网上找到了许多,但都解决不了问题,有哪位大侠能提供解决方法?
应该是环境的问题,看看以下步骤是否有参考意义:
先下个最新版cppunit-1.12.1.tar.gz解压缩,进入cppunit-1.12.1src目录,就是源代码所在,打开CppUnitLibraries.dsw工程,是用vc6.0写的,转换到CppUnitLibraries.slnOK,接着只需要修改一点点内容,删除掉解决方案下的DSPlugIn工程,修改TestRunner下UserInterfaceDynamicWindowMsDevCallerListCtrl.cpp文件第67行,改成"#import"libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2"version("8.0")lcid("0")raw_interfaces_onlynamed_guids"。这样就可以了,点解决方案里的生成解决方案,等等等等....
终于好了,生成文件自动拷贝到上级目录的lib下,一共7个文件,除了原始里面那个。(用debug或release都可以的,默认是debug)
把cppunit-1.12.1include加到vs里的选择“选项”标签里的包含文件,cppunit-1.12.1lib加到库文件,lib想加到环境变量里也行,那样不用拷贝dll文件。
接着新建一个测试gui界面的vsc++2008MFC对话框工程CSS_CPPUNIT,修改项目属性里的配置属性里的链接器,启动增量链接改为否。修改CSS_CPPUNIT.cpp文件,改成这样
#include"stdafx.h"
#include"CSS_CPPUNIT.h"
#include"CSS_CPPUNITDlg.h"
#include
#include
这里再加上这句
BOOLCCSS_CPPUNITApp::InitInstance()
{
#pragmacomment(lib,"cppunitd.lib")
#pragmacomment(lib,"testrunnerud.lib")
把下面的注释掉
//CCSS_CPPUNITDlgdlg;
//m_pMainWnd=&dlg;
//INT_PTRnResponse=dlg.DoModal();
//if(nResponse==IDOK)
//{
////TODO:在此放置处理何时用
////“确定”来关闭对话框的代码
//}
//elseif(nResponse==IDCANCEL)
//{
////TODO:在此放置处理何时用
////“取消”来关闭对话框的代码
//}
然后在其后添加
CppUnit::MfcUi::TestRunnerrunner;
CppUnit::TestFactoryRegistry®istry=CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest(registry.makeTest());
runner.run();
returntrue;
完成了,编译一下看看,界面出来了,试试看这个测试工具吧。
相关文章推荐
- C语言基础及例程
- C语言到底怎么分配空间
- 多线程之信号量(By C++)
- 第十三周项目 1分数类中的运算符重载
- C++实现稀疏矩阵的压缩存储、转置、快速转置
- C++实现对称矩阵的压缩存储
- C++第六次作业
- C++实验6—数组合并
- c++中成员初始化列表的问题
- 第六次C++上机作业
- 为什么使用指针比使用对象本身更好?
- C语言动态分配内存
- C语言回调函数 2
- 求最短路径———Dijkstra算法和Floyd算法
- C语言结构体占用空间内存大小解析
- C语言知识体系框架
- 第十三周项目 4 立体类族共有的抽象类
- 第十三周项目 3 形状类族的中的纯虚函数
- 【C语言】用mktime函数获取一个日期是星期几
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]