您的位置:首页 > 编程语言 > C语言/C++

在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)

2016-05-21 15:25 1141 查看
文章很实用,但是我在vs2012下配置又出现了更奇葩的问题

原文地址:在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)作者:每天up

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

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==========

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;
完成了,编译一下看看,界面出来了,试试看这个测试工具吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: