Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Class.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Class.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Class.h	(revision 640)
@@ -147,4 +147,21 @@
 		return false;
 	}
+	bool Equals( const CClass *pClass ) const
+	{
+		// ポインタが等しいかどうかを見てみる
+		if( this == pClass )
+		{
+			return true;
+		}
+		else if( this->IsNeedResolve() || pClass->IsNeedResolve() )
+		{
+			// 依存関係解決前の状態であれば、パスが等しいかどうかを見てみる
+			if( this->IsDuplication( pClass ) )
+			{
+				return true;
+			}
+		}
+		return false;
+	}
 
 	virtual void Using() const;
@@ -466,5 +483,5 @@
 	void GetReferenceOffsetsInitializeBuffer( std::string &referenceOffsetsBuffer, int &numOfReference, int baseOffset = 0 ) const;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Const.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Const.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Const.h	(revision 640)
@@ -1,5 +1,5 @@
 #pragma once
 
-//定数
+//è
 class CConst
 	: public RelationalObjectModuleItem
@@ -9,5 +9,5 @@
 	_int64 i64data;
 
-	// XMLシリアライズ用
+	// XMLVACYp
 private:
 	friend class boost::serialization::access;
@@ -66,9 +66,9 @@
 	double GetDoubleData();
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 class Consts : public Jenga::Common::Hashmap<CConst>
 {
-	// XMLシリアライズ用
+	// XMLVACYp
 private:
 	friend class boost::serialization::access;
@@ -96,5 +96,5 @@
 };
 
-//定数マクロ
+//è}N
 class ConstMacro
 	: public RelationalObjectModuleItem
@@ -104,5 +104,5 @@
 	std::string expression;
 
-	// XMLシリアライズ用
+	// XMLVACYp
 private:
 	friend class boost::serialization::access;
@@ -154,10 +154,10 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 class ConstMacros
 	: public Jenga::Common::Hashmap<ConstMacro>
 {
-	// XMLシリアライズ用
+	// XMLVACYp
 private:
 	friend class boost::serialization::access;
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/DataTable.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/DataTable.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/DataTable.h	(revision 640)
@@ -150,4 +150,4 @@
 	void ResetDataSectionBaseOffset( long dataSectionBaseOffset );
 
-	void Resolve( const ObjectModule &resolver );
+	void Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Delegate.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Delegate.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Delegate.h	(revision 640)
@@ -33,4 +33,7 @@
 
 		ar & BOOST_SERIALIZATION_NVP( importedNamespaces );
+		ar & BOOST_SERIALIZATION_NVP( paramStr );
+		ar & BOOST_SERIALIZATION_NVP( returnTypeName );
+		ar & BOOST_SERIALIZATION_NVP( sourceIndex );
 		ar & BOOST_SERIALIZATION_NVP( dynamicParams );
 	}
@@ -92,5 +95,5 @@
 	bool IsSimilar( const Delegate &dgt ) const;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 typedef Jenga::Common::Hashmap<Delegate> Delegates;
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Interface.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Interface.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Interface.h	(revision 640)
@@ -90,7 +90,9 @@
 	}
 
+	bool Equals( const Interface *pInterface ) const;
+
 	std::string GetFullNameWithActualGenericTypeParameters() const;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 typedef std::vector<Interface *> Interfaces;
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Member.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Member.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Member.h	(revision 640)
@@ -77,5 +77,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 typedef std::vector<Member *> Members;
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Meta.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Meta.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Meta.h	(revision 640)
@@ -162,4 +162,4 @@
 	const CClass *FindClassSupportedTypeDef( const Symbol &symbol );
 
-	void Resolve( const ObjectModule &resolver );
+	void Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Method.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Method.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Method.h	(revision 640)
@@ -49,5 +49,5 @@
 	virtual void SetNotUseMark( bool isNotUse ) = 0;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 
@@ -159,5 +159,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 BOOST_CLASS_EXPORT( DynamicMethod );
@@ -235,5 +235,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 BOOST_CLASS_EXPORT( StaticMethod );
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/NativeCode.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/NativeCode.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/NativeCode.h	(revision 640)
@@ -117,5 +117,5 @@
 	const ::CClass &GetClass() const;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 typedef std::vector<Schedule> Schedules;
@@ -249,4 +249,4 @@
 	void ResetRelationalObjectModuleIndex( const std::vector<int> &relationTable );
 
-	void Resolve( const ObjectModule &resolver );
+	void Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/ObjectModule.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/ObjectModule.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/ObjectModule.h	(revision 640)
@@ -65,5 +65,5 @@
 
 	// 依存関係の解決を行う
-	void Resolve();
+	void Resolve( ResolveErrors &resolveErrors );
 
 	// 下記の関連になるようなテーブルを取得する
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Procedure.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Procedure.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Procedure.h	(revision 640)
@@ -111,5 +111,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 
@@ -161,4 +161,5 @@
 		ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( Procedure );
 		ar & boost::serialization::make_nvp("pParentClass", const_cast<CClass *&>(pParentClass) );
+		ar & boost::serialization::make_nvp("pInterface", const_cast<Interface *&>(pInterface) );
 
 		if( ActiveBasic::Common::Environment::IsRemoveExternal() )
@@ -173,5 +174,4 @@
 		ar & BOOST_SERIALIZATION_NVP( _paramStr );
 		ar & BOOST_SERIALIZATION_NVP( importedNamespaces );
-		ar & boost::serialization::make_nvp("pInterface", const_cast<Interface *&>(pInterface) );
 		ar & BOOST_SERIALIZATION_NVP( pMethod );
 		ar & BOOST_SERIALIZATION_NVP( isMacro );
@@ -209,9 +209,18 @@
 	virtual bool IsDuplication( const UserProc *pUserProc ) const
 	{
-		if( this->GetParentClassPtr() == pUserProc->GetParentClassPtr()	// 親クラスが等しい
-			&& this->pInterface == pUserProc->pInterface				// インターフェイスが等しい
-			&& pUserProc->IsEqualSymbol( *this )						// 名前空間及び名前が等しい
-			&& this->Params().Equals( pUserProc->Params() )				// パラメータが等しい
-			&& this->returnType.Equals( pUserProc->returnType ) )		// 戻り値が等しい
+		bool isEqualParentClass =
+			this->HasParentClass() && pUserProc->HasParentClass()
+			? this->GetParentClassPtr()->Equals( pUserProc->GetParentClassPtr() )
+			: this->GetParentClassPtr() == pUserProc->GetParentClassPtr();
+		bool isEqualInterface =
+			this->pInterface && pUserProc->pInterface
+			? this->pInterface->Equals( pUserProc->pInterface )
+			: this->pInterface == pUserProc->pInterface;
+
+		if( isEqualParentClass										// 親クラスが等しい
+			&& isEqualInterface										// インターフェイスが等しい
+			&& pUserProc->IsEqualSymbol( *this )					// 名前空間及び名前が等しい
+			&& this->Params().Equals( pUserProc->Params() )			// パラメータが等しい
+			&& this->returnType.Equals( pUserProc->returnType ) )	// 戻り値が等しい
 		{
 			return true;
@@ -376,5 +385,5 @@
 	const CMethod &GetMethod() const;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 
 	static const UserProc *pGlobalProc;
@@ -484,5 +493,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 class DllProcs : public Jenga::Common::Hashmap<DllProc>
@@ -525,5 +534,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/RelationalObjectModuleItem.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/RelationalObjectModuleItem.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/RelationalObjectModuleItem.h	(revision 640)
@@ -68,5 +68,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver ) = 0;
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) = 0;
 };
 
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Resolver.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Resolver.h	(revision 640)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Resolver.h	(revision 640)
@@ -0,0 +1,37 @@
+#pragma once
+
+namespace ActiveBasic{ namespace Common{ namespace Lexical{
+
+
+class ResolveError
+{
+	int relationalObjectModuleIndex;
+	std::string targetItemName;
+public:
+	ResolveError( int relationalObjectModuleIndex, const std::string targetItemName )
+		: relationalObjectModuleIndex( relationalObjectModuleIndex )
+		, targetItemName( targetItemName )
+	{
+	}
+
+	int GetRelationalObjectModuleIndex() const
+	{
+		return relationalObjectModuleIndex;
+	}
+	const std::string &GetTargetItemName() const
+	{
+		return targetItemName;
+	}
+};
+class ResolveErrors
+	: public std::vector<ResolveError>
+{
+public:
+	void Add( const ResolveError &resolveError )
+	{
+		this->push_back( resolveError );
+	}
+};
+
+
+}}}
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Template.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Template.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Template.h	(revision 640)
@@ -47,5 +47,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Type.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Type.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Type.h	(revision 640)
@@ -230,5 +230,5 @@
 	std::string ToString() const;
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 
 
@@ -311,5 +311,5 @@
 {
 	Type basicType;
-	CClass *pClass;
+	const CClass *pClass;
 
 	// XMLシリアライズ用
@@ -321,9 +321,9 @@
 
 		ar & BOOST_SERIALIZATION_NVP( basicType );
-		ar & BOOST_SERIALIZATION_NVP( pClass );
-	}
-
-public:
-	BlittableType( const Type &basicType, CClass *pClass )
+		ar & boost::serialization::make_nvp("pClass", const_cast<CClass *&>(pClass) );
+	}
+
+public:
+	BlittableType( const Type &basicType, const CClass *pClass )
 		: basicType( basicType )
 		, pClass( pClass )
@@ -342,4 +342,6 @@
 	}
 	const std::string GetCreateStaticMethodFullName() const;
+
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 class BlittableTypes : public std::vector<BlittableType>
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/TypeDef.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/TypeDef.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/TypeDef.h	(revision 640)
@@ -51,5 +51,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 };
 
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Variable.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Variable.h	(revision 639)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Variable.h	(revision 640)
@@ -175,5 +175,5 @@
 	}
 
-	virtual bool Resolve( const ObjectModule &resolver );
+	virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
 
 
