【问题标题】:System::String has no member Length in C++/CLISystem::String 在 C++/CLI 中没有成员 Length
【发布时间】:2021-10-07 18:54:33
【问题描述】:

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

在下面的伪代码示例中,我想将 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 属性。

Length is listed in the Object Browser

缺少什么?

【问题讨论】:

  • 缺少的是产生此错误的实际代码。

标签: string c++-cli managed-c++


【解决方案1】:

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

【讨论】:

  • 我看到你的回答太晚了,正如你在这里提到的那样,我设法解决了这个问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2010-10-28
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 2011-06-01
  • 2010-11-29
相关资源
最近更新 更多