2012-07-24 3 views
0

VC++ 코드가 있는데 C#으로 변환하려고합니다. 다른 소프트웨어를 사용해 보았지만 VC++의 기능 중 일부를 C#으로 변환하지 않습니다. 어떻게 할 수 있습니까? 또는 VC++ 코드를 C#에서 직접 사용할 수 있습니까? 이 VC++ 방법입니다 예를 들어VC++ 코드를 C#으로 변환하는 방법?

, 난 자동 수동으로 변환되지 않습니다 코드의 일부를 가지고 #

void init_gf (int poly) 
    { 

int m,b,p,v; 

    // Return storage from previous setup 



if (log) 

{ 

     free (log); 

     free (alog); 

     free (rspoly); 

     rspoly = NULL; 
    } 

    // Find the top bit, and hence the symbol size 

    for (b = 1, m = 0; b <= poly; b <<= 1) 

     m++; 

    b >>= 1; 

    m--; 

    gfpoly = poly; 

    symsize = m; 


    // Calculate the log/alog tables 

    logmod = (1 << m) - 1; 

    log = (int *) malloc (sizeof (int) * (logmod + 1)); 

    alog = (int *) malloc (sizeof (int) * logmod); 


    for (p = 1, v = 0; v < logmod; v++) 

    { 

     alog[v] = p; 

     log[p] = v; 

     p <<= 1; 

     if (p & b) 

     p ^= poly; 

    } 

} 
+0

나는 직접적인 방법이 있다고 생각하지 않습니다. AFAIK 재 작성이 필요할 수 있습니다. – Anuraj

+0

어떤 종류의 코드인지에 따라 DLL을 만들 수 있습니다. –

+0

헤이 어떻게 그것의 DLL을 만들 수 있습니까? –

답변

0

당신은 아래의 옵션

  1. 가 c를로 변환 할 C로 포팅
  2. VC++ 코드를 COM으로 표시하고 .NET의 COM Inter-op를 사용합니다.
  3. VC++를 사용하여 C# &에서 구성 요소를 완전히 다시 작성합니다. 응용 프로그램 논리를 참조하기위한 코드.

변환 된 코드에 안전하지 않은 작업이 포함될 수 있으며 안전하지 않은 플래그로 컴파일해야 할 수도 있습니다. 자동 변환 코드 및 요구 사항을 확인하여 자동 변환기를 사용하여 변환할만한 가치가 있는지 여부를 확인하여 결정할 것을 권장합니다.

1

자동으로 변환 할 수는 없습니다.

순수 논리를 변환 할 수도 있지만 C++과 C#은 완전히 다른 라이브러리를 사용합니다. C++은 C 런타임, MFC 등을 사용하고 C#은 .NET BCL을 사용합니다. C++ 코드에서 사용하는 클래스 및 메서드에 상응하는 .NET 코드를 최소한 배워야합니다.

예를 들어, 대신 배열을 사용하여의 malloc 호출을 변환 할 수 있습니다 :
(int*) malloc (sizeof (int) * logmod); ->new int[logmod]();

를가 많은 코드가 있다면, 당신은에 의해, C++/CLI를 사용하여 혼합 모드 라이브러리를 만드는 것이 좋습니다 수 C++ 코드를 그대로두고 프록시 역할을하는 관리되는 유형을 노출합니다.

1

VC++ 코드를 C#에서 직접 사용할 수 있습니까?

C++/CLI 응용 프로그램은 .NET에 의해 관리되며, 그런 경우는 관리되지 않는 네이티브의 경우에 당신은 단순히 C# 프로젝트에서 프로젝트에 대한 참조 또는 DLL을 추가 할 수 있으며 일반적으로

를 사용 코드를 사용하면 C# 또는 C++/CLI를 사용하여 래퍼를 만들거나 P/Invoke를 사용하여 direclty를 호출 할 수 있습니다.

편집 : 나는 캐럿 연산자에 대해 잘못
은, 서둘러의 비트에 대답, 미안! 삭제됨

+2

이 경우'^ '연산자는 대입 연산자 ('^ =')와 함께 사용되어 비트 연산을 수행합니다. – Botz3000

+0

Botz Sayed 무엇 – Nahum

+0

와트 약 & 연산자? –

관련 문제