2011-03-09 2 views
0

Давайте предположим следующую ситуацию:Передача неуправляемый указатель на неуправляемый объект в управляемом классе в C++/CLI

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

и

typedef std::vector<int>MyAnotherType; 

Я хочу передать указатель на STD :: вектор, выделенный (и заполняется) в коде C++/CLI для неуправляемого C++. Если я просто пишу a->AnotherMethod(b) то вектор пуст в неуправляемом коде (например, 4 элемента в C++/CLI и 0 элементы после перехода к a.

Что такое правильный способ сделать это?

+1

Там слишком много кода не хватает здесь, чтобы сказать наверняка, что это неправильно. является неуправляемого C++ код части одного и того же модуля, что и Код C++/CLI, вызывающий его, или вы пытаетесь передать коллекции STL в DLL границы (очень плохая идея)? –

+0

@Ben, да, именно я хотел передать коллекцию STL между DLL. Наконец я сдался и сделал обходной путь pin_ptr :) – Jamie

ответ

1

Попробуйте pragma managed and unmanaged.

Убедитесь, что определение класса вы передаете в DLL определяется в неуправляемый разделе.