Visual c++ 如何访问位于不同项目中的命名空间中的类?
我在另一个项目下有三个项目,每个项目都包含一个名称空间。现在,我需要在其中调用一个类,该类位于VisualStudio2008中的命名空间下。请不要要求我将依赖项添加到主项目中,这样我就可以访问名称空间和其中的所有类,就像访问本地名称空间一样,但由于某些限制,我不能这样做。告诉我一些类似派生类的概念,以便我可以访问该类 我要调用的LanguageTable类如下所示:Visual c++ 如何访问位于不同项目中的命名空间中的类?,visual-c++,c++-cli,Visual C++,C++ Cli,我在另一个项目下有三个项目,每个项目都包含一个名称空间。现在,我需要在其中调用一个类,该类位于VisualStudio2008中的命名空间下。请不要要求我将依赖项添加到主项目中,这样我就可以访问名称空间和其中的所有类,就像访问本地名称空间一样,但由于某些限制,我不能这样做。告诉我一些类似派生类的概念,以便我可以访问该类 我要调用的LanguageTable类如下所示: #define GFX_LANGUAGE_MAX 20 namespace gfx_viewer_win32 { publ
#define GFX_LANGUAGE_MAX 20
namespace gfx_viewer_win32
{
public ref class LanguageTable
{
public:
static Dictionary<String ^, List<String ^>^> ^ language_string_table;
static array<String ^> ^language_string_id;
LanguageTable(void)
{
}
~LanguageTable(void)
{
}
};
}
#pragma once
using namespace gfx_coder_prj_parser;
namespace Code_generator
{
public ref class CCodeGenerator : CCodeParserMultiLayer
{
CCodeGenerator(void)
{
}
~CCodeGenerator(void)
{
}
/*============I want to call LanguageTable class from here==========*/
};
}
如果您不想添加
LanguageTable
类的程序集作为参考,可以通过System.Reflection
访问它。首先加载程序集并创建LanguageTable
的实例,现在您可以调用方法,通过按名称搜索来访问它的属性,如
Assembly ^ langTableAssembly = Assembly::Load("assembly_name" or binary_data_of_assembly );
object ^ langTable = langTableAssembly->CreateInstance("gfx_viewer_win32::LanguageTable", ...with_other_params);
Type ^ langTableType = langTable->GetType();
MemberInfo ^ langStringID = langTableType.GetMember("language_string_id")[0];
MethodInfo ^ someMethod = langTableType.GetMethod("method_name");
someMethod->Invoke(langTable, ...other_params);
但这不是一个好办法。这取决于名称,名称的任何更改(通过重构等),您必须修复上面的代码。我不能说,这是最好的表现
最后,一旦加载,LanguageTable的程序集将不会在程序执行期间卸载。如果您希望卸载它,这是另一个名为“玩Appdomains
”的故事
首先是一些链接。您是想从另一个进程(如远程处理)调用类,还是想将项目链接在一起(如使用静态/动态库的应用)?请提供更多的信息。