2016-07-21 3 views
0

C# 2D 객체 배열을 C++ std 2D 객체 배열로 변환하는 최선의 방법은 무엇입니까?C# 객체 [,] 2D 배열을 C++ 표준 2D 배열로 변환

var data = new object[1, 5]; 
data[0, 0] = "1"; 
data[0, 1] = 1.1; 
data[0, 2] = DateTime.Now; 
data[0, 3] = true; 
data[0, 4] = null; 

마샬링의 과정처럼 어떻게 보일 것이다 :

예를 들어,이 C#의 2D 객체 배열을? - 가능하면

C# -> C++ 마샬링과 관련하여 권장할만한 리소스가 있습니까?

도움 주셔서 감사합니다.

답변

0

  1. 이익
을 C#을 배열의 모든 인덱스를 통해
  • 루프 ++ C에서 2D 객체 배열을 확인하고 자신의 방법으로 C++로 각 개체를 마샬링 것처럼 마샬링 보일 것이다

    네이티브 코드는 까다 롭습니다. 모든 것이 마샬링되는 방법을 정확히 알아야합니다. C#은 C++과의 interop에서 실제로 시도조차하지 않습니다. COM, .NET 및 C와 유사한 라이브러리와의 상호 운용성을 위해 설계되었습니다. 일종의이 가능하지만 C#에서 직접 C + +와 상호 작용하고 싶지는 않습니다.

    .NET에서 C++ 로의 interop을 원하면 가장 좋은 방법은 C++/CLI입니다. 이렇게하면 네이티브 C++와 관리되는 C++를 단일 관리되는 어셈블리로 결합 할 수 있습니다. 그래도 여전히 많은 일이있을 것입니다. 네이티브 C++에 익숙하지 않다면, 작은 실수가 쉽게 전파되어 예기치 않게 응용 프로그램이 중단되어 디버깅하기가 어려울 수 있으므로 매우 조심해야합니다.

  • +0

    안녕하세요 @ 답변 감사합니다. C# -> C++/CLI에서의 변환은 자동으로 수행되지만 cli : array로 수행됩니다. 내가 얻으려고하는 것은 기본적으로 MatLab에서 사용되는 C#으로 작성한 큰 파일 CSV 파서를 둘러싼 간단한 래퍼를 작성하는 것입니다. .NETMARL 셀로의 고통스러운 느린 변환을 피하기 위해 네이티브 C++에서 래퍼를 작성하고 Matlab에서 셀 변환을 피하기 위해 C++이 MatLab IDX와 상호 운용 될 수 있는지 확인하려고합니다. :) –

    +0

    @MarjanNikolovski 나는 그것이 자동적이라는 말은 아니다. 당신은 여전히 ​​모든 단일 객체를 수동으로 변환해야한다. C++과는 달리 C++에서 C++ 객체를 처리 할 수 ​​있기 때문에 C++에서 * 가능 * 할 수 있습니다. C++ 객체가 필요하지 않은 경우 C#을 사용할 수 있습니다. 그러나 설명대로 해당되지는 않습니다. – Luaan