2014-06-19 3 views
0

다른 exe에서 생성 된 데이터를 읽는 타사 응용 프로그램 용 dll 플러그인을 개발하려고합니다. 나는 이것을 boost::managed_windows_shared_memory으로 사용하고 있습니다.Boost managed_windows_shared_memory find() crash

exe는 공유 메모리를 생성하고 잘 동작하는 객체를 씁니다. 그러나, 내가 dll 코드에서 해당 개체를 찾으려고하면 내 타사 응용 프로그램이 충돌합니다. 나는 많은 것을 수색하여 this post을 발견했다. 마지막 답변은 find()를 사용하면 교착 상태가 발생한다고 언급합니다.

boost::interprocess_mutex을 사용해 보았지만 작동하지 않았습니다. 이 문제를 어떻게 해결할 수 있는지에 대한 지침이 있습니까? 감사! EXE 파일에서

:

boost::interprocess::interprocess_mutex myMutex; 

myMutex.lock(); 

i = managed_shm.find_or_construct<int>("MyInteger")(992); 

myMutex.unlock(); 

DLL을 물 :

boost::interprocess::interprocess_mutex myMutex; 

myMutex.lock(); 

std::pair<int*, std::size_t> p = managed_shm.find<int>("MyInteger"); 

myMutex.unlock(); 

답변

1

프로세스 간 (익명)는 공유 메모리 내부 배치 할 때 사용하기위한 것이다.

: 당신은 명명 된 뮤텍스를 사용하여 공유 메모리 영역의 생성을 제어하는 ​​데 사용하거나 공유 메모리 외부에서 그것을 에 대한 액세스를 동기화 할 경우