Есть такой код:
DLL
typedef std::map<int, int> MadMap;
class TEST_EXT_CLASS MyClass
{
public:
void Check(MadMap& myMap);
};
void MyClass::Check(MadMap& myMap)
{
myMap[1] = 10;
myMap[3] = 30;
myMap[5] = 50;
}
Клиент
MadMap myMap;
myMap[1] = 0;
myMap[3] = 0;
myMap[5] = 0;
MyClass cls;
cls.Check(myMap);
Когда управление переходит в MyClass::Check, то выполняется только первая строчка.
На myMap[3] = 30; — Access Violation.
Я что-то неправильно делаю???
Если все правильно, то можно ли это обойти честными способами — без правки stl-эвских файлов.
Статью "Заметка о некоторых особенностях использования STL в DLL".
Роэтому ссылаться на нее не стоит.
Меня интересует четкий ответ — да||нет и как.
Владимир Безуглый.