C ++ CLR控制台应用程序[无需访问Directory :: GetCurrentDirectory C3374]

时间:2018-03-09 22:26:57

标签: visual-c++ c++-cli clr

我的代码很简单:

msclr::interop::marshal_context ctx;
System::String ^converted = 
    msclr::interop::marshal_as<String^>(Directory::GetCurrentDirectory);
array<String^>^ files = 
    Directory::GetFiles(converted, "*.cpp", System::IO::SearchOption::AllDirectories);

我只是想获取当前目录,然后获取该文件夹中的文件以及所有子文件夹。但我收到以下错误:

  

错误C3374无法获取地址   &#39;系统:: IO ::目录:: GetCurrentDirectory&#39;除非创建委托   实例

1 个答案:

答案 0 :(得分:1)

我不确定为什么你需要尝试编组这样的方法。尝试直接调用它:

System::String^ converted = Directory::GetCurrentDirectory();
array<String^>^ files = 
    Directory::GetFiles(converted, "*.cpp", System::IO::SearchOption::AllDirectories);
  • Directory::GetCurrentDirectory已经返回System.String^,因此您无需编组或转换它。
  • marshal_as函数用于将托管类型转换为非托管类型,而不是转换值。
  • 您获得的错误来自于不使用以下括号Directory::GetCurrentDirectory调用Directory::GetCurrentDirectory()