命名空间在C 中碰撞,坚持寻找解决方案
namespace collision in C++, stuck in finding a solution
我想使用XML在代码中组合两个库。在这里阅读了许多帖子之后,我决定将较小的库包裹在命名空间环境中。
现在这里开始我的问题。(我将使用伪代码,因为有〜2000行代码)
xmlparser.h
#include<...>
namespace xmlparser
{
stuff that belongs to headerfile
}
xmlparser.cpp
#include "xmlParser.h"
#include "..."
using namespace xmlparser;
stuff that belongs to source code ...
现在,我在第1000行上的xmlparser.cpp中遇到了一个错误(我假设在这里一切都很好?)
)未定义的引用`xmlparser :: stringDup(char const*,int)'
引起错误的行:
XMLNode XMLNode::createXMLTopNode(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,stringDup(lpszName),isDeclaration); }
在标题文件中:
XMLDLLENTRY XMLSTR stringDup(XMLCSTR source, int cbData=-1);
来源:
// Duplicate a given string.
XMLSTR stringDup(XMLCSTR lpszData, int cbData)
{
if (lpszData==NULL) return NULL;
XMLSTR lpszNew;
if (cbData==-1) cbData=(int)xstrlen(lpszData);
lpszNew = (XMLSTR)malloc((cbData+1) * sizeof(XMLCHAR));
if (lpszNew)
{
memcpy(lpszNew, lpszData, (cbData) * sizeof(XMLCHAR));
lpszNew[cbData] = (XMLCHAR)NULL;
}
return lpszNew;
}
给出了对" XMLPARSER :: stringDup(char const*,int)"的更未定的引用。我是否犯了系统错误?
您是否忘记将xmlparser.cpp的内容放入名称空间范围" namespace xmlparser {xxxxxx}"?
xmlparser.cpp的内容也需要以blow的名称范围命名:
#include "xmlParser.h"
#include "..."
namespace xmlparser
{
*** the contents of xmlParser.cpp ***
}
在您的来源中,您必须更改
XMLSTR stringDup(XMLCSTR lpszData, int cbData)
to
XMLSTR xmlparser::stringDup(XMLCSTR lpszData, int cbData)
等。
相关文章:
- QT在错误的班级中寻找空位
- 正在寻找C++不可变的hashset/hashmap
- 寻找地理和伤害意味着超载
- 寻找一种更好的方法来表示无符号字符数组
- 我正在寻找一种优雅的方式来从元组向量创建tuple_element向量
- 寻找闰年的逻辑是如何运作的?
- C++:寻找"returning address of local variable..."的更正
- 坚持编译QDoc以在Windows上构建qt5
- 在C++中寻找排列和组合
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 为表示一个或多个操作的C++函数的int参数寻找类型安全的替换
- 寻找解决这个动态编程问题的提示
- 寻找最小楼梯成本的动态规划问题的错误答案
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 在Windows上坚持Jupyter:内核无法启动
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib
- 我只是在寻找模板,在我的书中找到了这段代码,这显示了隔离错误?
- 寻找C++中数组和cout交互的解决方案
- C++原理和练习练习-从输入值n中寻找素数
- 命名空间在C 中碰撞,坚持寻找解决方案