【发布时间】:2012-07-30 11:05:53
【问题描述】:
一段时间以来,我一直在使用this code 在 C++/CLI 中编组字符串。最近我已经更新到 VS 2012 RC 来尝试一下。我真的很喜欢这个简单的设计,但是我没有一个包含 clix.h 的项目可以编译。它在 2010 年工作得很好......可能是什么问题?谢谢您的回答!
这是编译器输出:
- 警告 C4346: 'clix::detail::IsManagedString::Result' 依赖名是 不是类型。
- 错误 C2988:无法识别的模板声明/定义
- 错误 C2059:语法错误:'
- 错误 C2039:“结果”:不是“全局命名空间”的成员
- 错误 C2143:语法错误:缺少 ';'在'}'之前
代码块错误在:
typename detail::Select<detail::IsManagedString<SourceType>::Result>::Type<
typename detail::StringTypeSelecter<encoding>::Type,
System::String ^>::Result marshalString(SourceType string) {
// Pass on the call to our nifty template routines
return detail::StringMarshaler<
detail::IsManagedString<SourceType>::Result ? detail::CxxFromNet : detail::NetFromCxx
>::marshal<encoding, SourceType>(string);
}
一个例子,源文件:
#include "clix.h"
int main()
{
}
Clix 头文件可以在这个link找到。
【问题讨论】:
-
您很可能在某个地方缺少 typename 关键字。阅读msdn.microsoft.com/en-us/library/tsx7wabs(v=vs.80).aspx
-
请添加一个显示问题的最小编译示例
-
Here's 一个在 vs 2012 中重现问题的简单项目。请注意,我不知道是否能够在 vs 2010 中重现它。
-
@rhalbersma 在这种情况下应该是“一个最小的非编译示例”。 :)
-
@Zylius 仅提取重要部分。我怀疑有人会下载项目并阅读近 200 行代码来回答您的问题。
标签: c++ string templates marshalling visual-studio-2012