Pointers 将非托管指针传递到C+中托管类中的非托管对象+/CLI

Pointers 将非托管指针传递到C+中托管类中的非托管对象+/CLI,pointers,c++-cli,unmanaged,mixed-mode,unmanaged-memory,Pointers,C++ Cli,Unmanaged,Mixed Mode,Unmanaged Memory,让我们假设以下情况: class A { public: void MyMethod() { a->AnotherMethod(b); } private: MyType* a; MyAnotherType* b; }; 及 typedef std::vectorMyAnotherType; 我想传递一个指针,指向STD::vector(在C++ /CLI代码中分配)(非填充的C++)。如果我只写a->AnotherMethod(b),那么向量在非托管代码中

让我们假设以下情况:

class A
{
public:
  void MyMethod()
  {
    a->AnotherMethod(b);
  }
private:
  MyType* a;
  MyAnotherType* b;
};

typedef std::vectorMyAnotherType;

我想传递一个指针,指向STD::vector(在C++ /CLI代码中分配)(非填充的C++)。如果我只写

a->AnotherMethod(b)
,那么向量在非托管代码中为空(例如,在C++/CLI中为4个元素,在传递到
a
后为0个元素)

正确的方法是什么?

试试看


确保在非托管区定义传入DLL的类的定义。

这里缺少太多代码来确定错误。是不是与C++/CLI代码调用的同一个模块的非托管C++代码部分,还是试图通过DLL边界传递STL集合(一个非常坏的想法)??@Ben,是的,我确实想在DLL之间传递STL集合。最后我放弃了,做了一个pin_ptr解决方案:)
typedef std::vector< int >MyAnotherType;