【发布时间】:2011-07-19 04:34:42
【问题描述】:
我正在尝试围绕非托管 C++ 静态库编写托管包装器 (C++/CLI),但遇到了两个问题:
-
非托管库在其标头中使用
std::shared_ptr。包含<memory>,并且标头作为非托管项目的一部分进行编译。但是,当我在托管项目中包含此标头时,我收到此错误:错误 C2039:“shared_ptr”:不是“std”的成员
如何从 C++/CLI 访问
SortedDictionary<K, V>的Values集合?我似乎找不到任何正确语法的示例,并且 C# 样式的语法无法编译。
#1 的代码:
// 1>Dummy.h(10): error C2039: 'shared_ptr' : is not a member of 'std'
#pragma once
#pragma managed(push, off)
#include <memory>
class Foo {};
typedef std::shared_ptr<Foo> FooPtr;
#pragma managed(pop)
using namespace System;
namespace Dummy {
public ref class Class1
{
public:
Class1(FooPtr);
};
}
【问题讨论】:
-
嗨嗨,很酷,您发现了错误。哪怕是题外话。文档指出,每个 #pragma managed(push, off) 都应该在包含之后发生,这对于第三方库显然是不可能的,但对于 STL 标头是可能的。 msdn.microsoft.com/en-us/library/0adb9zxe(v=vs.100).aspx
标签: visual-studio-2010 c++-cli shared-ptr