【发布时间】:2011-10-26 16:58:05
【问题描述】:
搜索递归搜索的 Windows 示例,我找到了 this,但尝试使用 cl(和 MSVC++ 工具链)编译它时,编译器指出错误大于错误。如果我不使用 MSVC++ GUI 完成的常规设置,是否需要直接包含一些额外的库。
发布的示例错误代码已翻译,因此看起来可能与英文不完全相同。
"*": This referencing cannot be done for System::String the compiler substitutes "*" by
"^" to continue analysis
和
System::String ^ a system-owned array cannot contain this managed type
这两个错误都在这一行
String* directories[] = Directory::GetDirectories(dir.c_str()); //dir is a usual string
因此不是我的编码。
我在搞砸什么?
编译行是:
cl /w /c /clr file.cpp
【问题讨论】:
-
该代码是用“C++ 托管扩展”语法编写的,但您正在编译为 C++/CLI —— 两种不同的语言,当然它不会工作。
-
@ildjarn:它是 C++/CLI,只需查看它、查看错误消息和编译器调用即可。它与 C++ 没有真正的关系。
-
@Sim:那你为什么要尝试使用 C++/CLI?如果您习惯于 C 或 C++,那么请坚持使用 C 或 C++。仅仅因为您使用的是 Windows 并不意味着您必须以 .NET 为目标
-
@ildjarn:该行在 C++/CLI 中是错误的,编译器在抱怨(这就是 OP 提出这个问题的原因)。较新的VS版本不支持C++的托管扩展,我认为OP使用旧版本的机会很小,如果她这样做了,她可能会知道她在做什么。
-
@Sim :如果您想坚持使用跨平台 C++,请参阅 Boost.Filesystem。
标签: windows c++-cli managed-c++