C ++中的命名空间冲突,一直在寻找解决方案

时间:2017-09-11 07:54:39

标签: c++ namespaces

我想使用XML在我的代码中组合两个库。 在阅读了很多帖子后,我决定将较小的库包装在命名空间环境中。

现在开始我的问题了。 (我将使用伪代码,因为有大约2000行代码)

xmlParser.h

Import-Package: org.osgi.framework, tutorial.example2.service

xmlParser.cpp

#include<...>
namespace xmlparser
{

stuff that belongs to headerfile

}

现在我在第1000行的xmlParser.cpp中收到错误(我假设在这里一切都很顺利???)

对`xmlparser :: stringDup(char const *,int)&#39;

的未定义引用

引发错误的行:

#include "xmlParser.h"
#include "..."
using namespace xmlparser;

stuff that belongs to source code ...
头文件中的

XMLNode XMLNode::createXMLTopNode(XMLCSTR lpszName, char isDeclaration) {  return XMLNode(NULL,stringDup(lpszName),isDeclaration); }
源中的

XMLDLLENTRY XMLSTR stringDup(XMLCSTR source, int cbData=-1);

对`xmlparser :: stringDup(char const *,int)&#39;的更多未定义引用给出。 我是否犯了系统错误?

2 个答案:

答案 0 :(得分:1)

在您的来源中,您必须更改

XMLSTR stringDup(XMLCSTR lpszData, int cbData)

XMLSTR xmlparser::stringDup(XMLCSTR lpszData, int cbData)

答案 1 :(得分:1)

您是否忘记将xmlParser.cpp的内容放入命名空间范围&#34; namespace xmlparser {xxxxxx}&#34; ?

xmlParser.cpp的内容也需要放在命名空间的名称空间范围内,比如打击:

   #include "xmlParser.h"
    #include "..."
    namespace xmlparser
    {
        *** the contents of xmlParser.cpp ***
    }