当前位置: 技术问答>linux和unix
gcc链接错误 "multiple definition of `memchr ..."
来源: 互联网 发布时间:2016-01-06
本文导语: 这个问题不知道怎么解决,我先解释一下,我用automak编译器编译一个工程,当然工程里有 .c文件(是以前的存c代码),还有后增加的.cpp文件, 是c++代码,里面用到了stl的 list和map,大概描述一下,是这样的: 工程...
这个问题不知道怎么解决,我先解释一下,我用automak编译器编译一个工程,当然工程里有 .c文件(是以前的存c代码),还有后增加的.cpp文件, 是c++代码,里面用到了stl的 list和map,大概描述一下,是这样的:
工程中有 decode.h,decode.c文件,存c代码,
有个 pm.h,pm.cpp 文件,c++代码,
pm.h文件头大概这样:
#include
using namespace std;
typedef std::list PMXX;
class ..
还有个 pc.h,pc.cpp文件
pc.cpp 开头大概这样:
#include "decode.h"
#include "pm.h"
问题出现了,编译通过,就是在链接的时候出现一堆错误:
multiple definition of `memchr ...
...first definition .. /usr/include/linux/... std::memchr(...)
还有一些,都是说系统的一些api重复定义了,代码中是绝对没定义系统函数的,
后来发现,我把 pc.cpp文件中的 #include "pm.h" 或者 #include "decode.h" 任意一个注释掉,就链接通过了,但是一定要用这两个啊 ,找不到哪里的问题!!
不知道有哪位仁兄 遇到过这问题吗??
工程中有 decode.h,decode.c文件,存c代码,
有个 pm.h,pm.cpp 文件,c++代码,
pm.h文件头大概这样:
#include
using namespace std;
typedef std::list PMXX;
class ..
还有个 pc.h,pc.cpp文件
pc.cpp 开头大概这样:
#include "decode.h"
#include "pm.h"
问题出现了,编译通过,就是在链接的时候出现一堆错误:
multiple definition of `memchr ...
...first definition .. /usr/include/linux/... std::memchr(...)
还有一些,都是说系统的一些api重复定义了,代码中是绝对没定义系统函数的,
后来发现,我把 pc.cpp文件中的 #include "pm.h" 或者 #include "decode.h" 任意一个注释掉,就链接通过了,但是一定要用这两个啊 ,找不到哪里的问题!!
不知道有哪位仁兄 遇到过这问题吗??
|
#include
#include
#include
#include
int main(int argc,char **argv)
{
std::list Test(3);
Test.push_back("test one");
Test.push_back("test two");
Test.push_back("test three");
std::list::iterator iTest=Test.begin();
while ( iTest != Test.end() )
{
std::cout
#include
#include
#include
int main(int argc,char **argv)
{
std::list Test(3);
Test.push_back("test one");
Test.push_back("test two");
Test.push_back("test three");
std::list::iterator iTest=Test.begin();
while ( iTest != Test.end() )
{
std::cout