首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++静态库链接器错误

C++静态库链接器错误
EN

Stack Overflow用户
提问于 2013-01-07 01:28:15
回答 2查看 230关注 0票数 2

我正在使用静态库创建一个简单的拼写检查程序,因为我希望其他人能够使用拼写检查功能。两个问题区域存在于库源代码和库头中。当我编译库时,这是我得到的错误:

代码语言:javascript
复制
 ar -cvq libspellcheck.a checker.o
    a - checker.o
    g++ -o spell-check main.o meta.o libspellcheck.a
    libspellcheck.a(checker.o): In function `check_spelling(char*, char*)':
    checker.cpp:(.text+0x0): multiple definition of `check_spelling(char*, char*)'
    libspellcheck.a(checker.o):checker.cpp:(.text+0x0): first defined here
    collect2: ld returned 1 exit status
    make: *** [spellcheck] Error 1

checker.cpp代码位于here。头文件(spellcheck.h)位于here

我想知道是什么导致了上面的错误,因为我不能弄清楚。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-07 02:25:06

看起来好像您已经向存档中添加了两次checker.cpp

请尝试使用以下命令:

代码语言:javascript
复制
ar -cvr libspellcheck.a checker.o

使用r而不是q将替换任何同名的现有文件,而不是添加该文件的另一个副本。

或者,只需确保在向其添加任何文件之前删除了该存档,以便它始终是空的。

票数 3
EN

Stack Overflow用户

发布于 2013-01-07 01:32:58

问题似乎是链接了两次checker.cpp -你能添加你的makefile吗(还要确保check_spelling没有在checker.cpp中定义两次,并在构建之前尝试清理中间文件)?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14184745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档