Windows 如何在C++/CLI

Windows 如何在C++/CLI,windows,c++-cli,managed-c++,Windows,C++ Cli,Managed C++,在谷歌上搜索我找到的一个递归搜索的windows示例,但试图用cl(和MSVC++工具链)编译这个示例,编译器声明错误对错误。如果我不使用MSVC++GUI的常规设置,是否需要直接包含一些额外的库 发布的示例错误代码是经过翻译的,因此可能与英语中的错误代码不完全相同 "*": This referencing cannot be done for System::String the compiler substitutes "*" by "^" to continue analysis 及

在谷歌上搜索我找到的一个递归搜索的windows示例,但试图用cl(和MSVC++工具链)编译这个示例,编译器声明错误对错误。如果我不使用MSVC++GUI的常规设置,是否需要直接包含一些额外的库

发布的示例错误代码是经过翻译的,因此可能与英语中的错误代码不完全相同

"*": This referencing cannot be done for System::String the compiler substitutes "*" by 
"^" to continue analysis

这两个错误都在这条线上

String* directories[] = Directory::GetDirectories(dir.c_str()); //dir is a usual string
因此不是我的编码

我搞砸了什么

编译行是:

cl /w /c /clr file.cpp

目录::GetDeirectories是一个.net调用,因此它将返回一个.net对象。您正在尝试将其转换为C++指针。最好是声明一个.net字符串数组。类型是这样的

array<String^>^ directories = Directory::GetDirectories(dir.c_str());
array^directories=Directory::GetDirectories(dir.c_str());

该代码是用“C++托管扩展”语法编写的,但您是用C++/CLI编译的——两种不同的语言,当然不起作用。@ildjarn:它是C++/CLI,请查看它、错误消息和编译器调用。与C++无关。@ Sim:为什么你要尝试使用C++ + CLI?如果你习惯C或C++,那么坚持C或C++。仅仅因为你在使用Windows并不意味着你必须瞄准目标。NET@ildjarn:该行在C++/CLI中是错误的,编译器正在抱怨(这就是OP问这个问题的原因)。C++的托管扩展不受更新版本的支持,我认为使用旧版本的OP的机会非常小,如果她使用了,她可能会知道她在做什么。@ Sim:看。如果你想坚持跨平台C++,我会喜欢遵循微软提供的指南,而不是被另一种语言所困扰。如果你使用CLI C++,那么上面的答案是正确的。然而,如果你正在寻找交叉兼容性,你可能应该看看c++的本机函数。我的目标是(如上面的评论所述)编写一个与windows兼容的小代码来遍历文件夹并查找特定的文件类型。我不是有意使用这些东西的,只是在谷歌上大受欢迎,我试过了,被编译器搞糊涂了,觉得我错过了一个编译选项。
array<String^>^ directories = Directory::GetDirectories(dir.c_str());