XMLを使用してコード内に2つのライブラリを結合したいと思います。 ここで多くの記事を読んだ後、私は名前空間環境に小さなライブラリをラップすることに決めました。C++で名前空間が衝突し、解決策を見つけることに固執しました
ここに私の問題が始まります。今、私はxmlParser.cppでエラーが出る
#include "xmlParser.h"
#include "..."
using namespace xmlparser;
stuff that belongs to source code ...
xmlParser.cpp
xmlParser.h
#include<...>
namespace xmlparser
{
stuff that belongs to headerfile
}
を(コードの〜2000行があるため、擬似コードを使用しI'will) (ここではすべてがうまくいったと思います)
xmlparser :: stringDup(char const *、int) 'への未定義の参照
エラーが発生しライン:ソース内
XMLDLLENTRY XMLSTR stringDup(XMLCSTR source, int cbData=-1);
:ヘッダーファイルで
XMLNode XMLNode::createXMLTopNode(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,stringDup(lpszName),isDeclaration); }
// 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(チャーCONST *、int) 'が与えられます。 体系的なエラーがありましたか?あなたの源で
ですから、名前空間内の関数を宣言したが外にそれを定義しますか? – tkausl
usingディレクティブを削除します。名前空間を開いて閉じ、そのスコープ内でそれらの関数を定義します。 – StoryTeller
名前空間で関数を定義するにはどうすればよいですか?ネームスペース{}環境にコードをラップしますか? –