2014-04-02 2 views
0

C# Windows 응용 프로그램에서 호출하는 C++ dll 프로젝트가 있습니다. 하지만이 C++ DLL 프로젝트에서 파일에 쓰기를 시도 할 때마다, 나는 다음과 같은 오류가 발생합니다 :C# Windows 프로젝트에서 C++ dll 프로젝트의 파일에 쓸 수 없습니다.

An unhandled exception of type 'System.AccessViolationException' occurred in Wrapper.dll

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

enter image description here

이 오류, 파일 fstream_Lock()에 코드 포인터를 수신 할 때 :

enter image description here

나는 C++ DLL 프로젝트에서 사용하고있는 코드는 다음과 같습니다

ofstream ofs("debug.txt");  // OK 
if (ofs.good())     // OK 
    ofs << "aaa" << endl;  // this line causes the error <-- 
ofs.close(); 

기타 정보 :

  1. VS2010-Winx64 (.NET 프레임 워크 4)에서 개발.
  2. Wrapper은 C#에서 호출되도록 C++ 코드를 래핑하는 관리되는 C++ 프로젝트입니다.
  3. 쓰기가 가능한 debug.txt 파일을 확인했습니다.

모든 의견을 보내 주시면 감사하겠습니다. 감사.

+0

확인 : VS2010에서

,이는 수행 할 수 있습니다. 말 그대로 Windows 액세스 문제 일 수 있습니까, 아니면 파일이 읽기 전용입니까? – miltonb

+0

@miltonb 감사의 말로 업데이트되었습니다. – herohuyongtao

+0

포인터가 예상되는 곳에 값을 전달 중입니다 ... – leppie

답변

0

런타임 라이브러리를 설정하는 데 혼란이 있음이 드러났습니다. C++ dll 프로젝트의 /MD에서 /MDb으로 런타임 라이브러리를 변경하면 문제가 해결되었습니다. 당신이 실제로 응용 프로그램에서 실행되는 폴더에 쓸 수있는 권한이

Project -> Properties -> Configuration Properties -> C/C++ 
     -> Code Generation -> Runtime Library -> Multi-threaded Debug DLL (/MDd) 
관련 문제