我想使用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;的更多未定义引用给出。 我是否犯了系统错误?
答案 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 ***
}