2017-11-14 6 views
-1

저는 많은 프로젝트에서 사용하는 C++로 작성된 유틸리티 라이브러리를 가지고 있습니다. <mutex>을 갖춘 정적 라이브러리를 CLR 라이브러리에 사용합니다.

나는 나의의 vb.net 프로젝트에 몇 가지 특징을 가지고/CLI C++에 대한 부분 랩퍼를 작성하고 싶었지만 즉시 문제로 실행 -

<mutex> is not supported when compiling with /clr or /clr:pure. 

그리고 그럴 수 없어 내가 가지고있는 ria logging 유틸리티가이 래퍼를 원하고 뮤텍스에 크게 의존하기 때문에 뮤텍스를 사용하여 물건을 잘라 낸다.

그래서 ..이 문제를 해결할 방법이 있습니까?

답변

0

만약 당신이 할 수있는 CLR (뮤텍스, 원자, ...) 래퍼 C의 평균에 의해 ++ 클래스/코드 또는 단순 전달 선언에서 불법 없습니다 "숨기기"는 C++ 헤더,

유일한 다른 방법 I 매우 비슷한 점은 Interop 어셈블리를 다음과 같이 생성하는 것입니다.
- "실제"C++ 코드 (뮤텍스, 원자 및 CLR에서 불법 인 모든 것을 포함)를 격리하는 비 관리 C++ "계층"
- C++ "layer"는 관리되지 않는 레이어를 사용하고 API/서비스를 .NET 세계에 노출 시켰습니다.

추악하고, 유지 관리가 어렵고 오류가 발생하기 쉽습니다. 불행히도.

0

extern "C"내 보낸 함수 만 네이티브 DLL에서/clr : pure로로드 할 수 있습니다. 전역 C 스타일 함수로 기능을 래핑해야합니다. DLL로 내보내고/CLR App 또는 Lib로 가져올 수 있습니다. https://www.codeproject.com으로 이동하여 'Console Output General for Every Executables'를 검색하십시오. 구체적인 구문을 볼 수있는 예제가 있습니다. 행운을 빌어 요