我有一个CLI项目,该项目使用元帅将String ^转换为std :: string。 出于某种原因,当我包含标头时,会出现这些似乎不明白的编译错误。
即使我没有对marshal_as进行任何调用,我仍然会收到编译错误。
我一直在网上寻找帮助。
也许您可以提供帮助?
代码:
#include <msclr\marshal_cppstd.h>
namespace ConnectionWrapper
{
inline std::string ToStdString(System::String^ str)
{
return msclr::interop::marshal_as<std::string>(str);
}
inline System::String^ ToCliString(const std::string std)
{
return msclr::interop::marshal_as<System::String^>(std);
}
}
编译错误:
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\msclr\marshal.h(222): error C3861: '_This_conversion_is_not_supported': identifier not found
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\msclr\marshal.h(224): note: see reference to class template instantiation 'msclr::interop::error_reporting_helper<_To_Type,_From_Type,false>' being compiled
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\msclr\marshal.h(233): error C3861: '_This_conversion_requires_a_context': identifier not found
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\msclr\marshal.h(235): note: see reference to class template instantiation 'msclr::interop::error_reporting_helper<_To_Type,_From_Type,true>' being compiled
答案 0 :(得分:0)
我解决了问题。虽然我不太了解如何。 -我关闭了/ permissive标志-一切正常
答案 1 :(得分:0)
非常感谢这个建议,我遇到了同样的问题。
关闭/permissive
标志可以解决该问题。顺便说一句,我注意到Windows的C ++ CLR空项目(/ SUBSYSTEM:WINDOWS)的标志已关闭,而Windows控制台项目已将其打开(VS 2017 / .Net 4.7)。