首页 > 解决方案 > System::String 在 C++/CLI 中没有成员 Length

问题描述

我正在使用 Visual Studio 2017 中的 C++/CLI 开发一个将 C++ 与 C# 代码连接起来的 DLL。对于该项目,我在Project -> Properties -> General. 我创建了一个String^变量,我想读取它的长度,但我无法这样做,因为 IntelliSense 找不到该属性Length,而大多数其他System::String功能都可用,例如Clone, Compare, CompareOrdinal等。

在下面的伪代码示例中,我想将 a 复制String到缓冲区,但如果它的长度超过某个限制,则截断。

void copyToBuffer(String^ message, char* f_buffer)
{
   if(message->Length > some limit)
      truncate...

   copy to buffer...
}

编译失败,因为编译器抛出错误class "System::String" has no member "Length",即使我可以轻松导航到Length对象浏览器中的属性。

长度在对象浏览器中列出

少了什么东西?

标签: stringc++-climanaged-c++

解决方案


将项目构建属性从“/permissive-”更改为“/permissive” 在我在测试中执行此操作后,Length 属性似乎很有用。


推荐阅读