Visual c++ 如何访问位于不同项目中的命名空间中的类?

Visual c++ 如何访问位于不同项目中的命名空间中的类?,visual-c++,c++-cli,Visual C++,C++ Cli,我在另一个项目下有三个项目,每个项目都包含一个名称空间。现在,我需要在其中调用一个类,该类位于VisualStudio2008中的命名空间下。请不要要求我将依赖项添加到主项目中,这样我就可以访问名称空间和其中的所有类,就像访问本地名称空间一样,但由于某些限制,我不能这样做。告诉我一些类似派生类的概念,以便我可以访问该类 我要调用的LanguageTable类如下所示: #define GFX_LANGUAGE_MAX 20 namespace gfx_viewer_win32 { publ

我在另一个项目下有三个项目,每个项目都包含一个名称空间。现在,我需要在其中调用一个类,该类位于VisualStudio2008中的命名空间下。请不要要求我将依赖项添加到主项目中,这样我就可以访问名称空间和其中的所有类,就像访问本地名称空间一样,但由于某些限制,我不能这样做。告诉我一些类似派生类的概念,以便我可以访问该类

我要调用的LanguageTable类如下所示:

#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
”的故事


首先是一些链接。

您是想从另一个进程(如远程处理)调用类,还是想将项目链接在一起(如使用静态/动态库的应用)?请提供更多的信息。