私は管理されていないC++ライブラリで作業するためにbrigdeクラスで作業しています。Marshallオブジェクトの属性がコンパイラエラーを生成します
ref class ManagedClass
{
private:
UnManagedClass* m_UnManaged;
String^ m_someString;
public:
UserAgent_Managed(String^ someString)
{
m_someString = someString;
// Compiler error
// Severity Code Description Project File Line Suppression State Error C2665 'msclr::interop::marshal_as': none of the 3 overloads could convert all the argument
// types
std::string unManagedString = msclr::interop::marshal_as<std::string>(m_someString);
// Following works
// std::string unManagedString = msclr::interop::marshal_as<std::string>(someString);
m_UnManaged = new UnManagedClass(unManagedString);
}
};
私はオブジェクト属性m_someString
でstd::string unManagedString = msclr::interop::marshal_as<std::string>(m_someString);
を呼び出すと、コンパイラは一致marshal_as
メソッドのシグネチャが存在しないことを私に語った:私は、次の(減少)のサンプルコードに問題があることをしました。 someString
パラメータで同じことを実行すると、コンパイラはエラーをスローしません。私は何が欠けていますか? m_someString
とsomeString
はいずれもString^
です。
Thxを
試してみてください。速い答えのためのThx。 – Moerwald