51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4624|回复: 5
打印 上一主题 下一主题

[求助] 使用CPPUnit时,出现error LNK2001

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-3-31 02:00:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
VC6.0下,按照CPPUnit提供的examples测试一个小的程序,build时有如下提示:
CompareTest.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CppUnit::SourceLine::~SourceLine(void)" ([email=??1SourceLine@CppUnit@@UAE@XZ]??1SourceLine@CppUnit@@UAE@XZ[/email])
CompareTest.obj : error LNK2001: unresolved external symbol "public: static void __cdecl CppUnit::Asserter::failIf(bool,class CppUnit::Message const &,class CppUnit::SourceLine const &)" ([email=?failIf@Asserter@CppUnit@@SAX_NABVMessage@2@ABVSourceLine@2@@Z]?failIf@Asserter@CppUnit@@SAX_NABVMessage@2@ABVSourceLine@2@@Z[/email])
CompareTest.obj : error LNK2001: unresolved external symbol "public: __thiscall CppUnit::Message::Message(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_t
raits<char>,class std::allocator<char> > const &)" ([email=??0Message@CppUnit@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z]??0Message@CppUnit@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z[/email])
……
……
(共35条,余略)

仔细和examples中最简单的simple比对后,发现在simple工程下还有一个Makefile.am文件。尝试把simple中的.CPP、.h单独取出重新build时也出现了N多条error LNK2001的提示。
请问:
1、Makefile.am有什么用?我的粗浅理解是:makefile是用来告诉编译器如何进行编译的,在UNIX中用make编译时会用到该文件。在VC下也需要吗?
2、出现以上的问题是不是就是因为VC无法链接到CPPUnit提供的类?该如何解决呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-3-31 11:21:46 | 只看该作者
找一下类CppUnit::SourceLine的实现在哪个源文件,然后把它加入测试工程。加入方法:VC->Project->Add To Project。

这类链接错误通常是源文件未加入工程引起的,即编译器找不到函数的实现。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-4-2 00:03:56 | 只看该作者
确实如此,感谢VisualUnit的帮助。
为了以后的扩展使用,我吧CPPUNIT的所有源文件都加入了工程,然后就OK了。


但,我还是有疑问:

1、只能用这个方法解决吗?这样每次我建新的测试工程岂不是都要加一遍?(CPPUNIT有几十个源文件啊~~~),而且我看它给的example中也没有加源文件,只包含了个Makefile.am文件。是不是还有别的解决方法呢??

2、安装完CPPUNIT后,我已经在tools->options ,directories 标签的 source files中加入了CPPUNIT源文件的路径,这样设置后工程不能自己找到源文件吗??(我原以为是可以的呢~~),如果是这样,设置它有什么用呢还??
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-4-2 09:41:40 | 只看该作者
1、自带的Makefile.am可能本身包含了源文件路径信息吧,我没看过,不知道。VC的缺省编译方式就是从*.dsp中查找源文件并编译的,手工加入也不麻烦啊。手工编辑MakeFile文件更麻烦,并且还容易错。至于CPPUNIT本身,只是一个框架而已,并不是自动化的。

2、设置的只是搜索路径,VC只知道可以从这些地方去找文件,而不知道哪些文件是当前工程所要编译的(如果把目录下的所有源文件都当成当前工程的源文件,很可能不对的)

[ 本帖最后由 VisualUnit 于 2007-4-2 09:44 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-4-10 14:27:56 | 只看该作者
我昨天也出现了这样相似的问题,搞了半天都没搞好,等会再试试看,呵呵...
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-7-26 16:20:33 | 只看该作者
这个问题怎么解决啊,总不能每次 都要加入所有的源文件吧??
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 09:28 , Processed in 0.072425 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表