2012-07-02 3 views
3

휴대용 비 시각적 라이브러리 용 C 코드가 있다고 가정합니다. 이 코드는 주로 CRT에 의존합니다 (QT/DirectX/WinAPI 등 종속성은 없습니다).C/C++ to C# 변환기 또는 에뮬레이터

C# 응용 프로그램에서이 코드를 사용할 수있는 방법이 있습니까? 나는 Managed C++에 대해 알고 있으며 그게 이 아니라이 나에게 적합한 방법입니다.

나는 자동 번역 (나는 읽을 수있는 출력, 작동 중 하나는 충분하지 않음) 또는 컴파일 된 C를 실행하는 데 사용할 수있는 에뮬레이터가 필요하지 않은 C/C++에서 C#/C++ 코드.

C# 코드의 기존 C/C++ 코드를 사용하는 데 도움이 될만한 정보가 있습니까?

EDIT/호출 너무 수용 방법이 아니다

P. 외부 EXE 호출 또는 COM/ActiveX 사용. 하나의 관리 DLL 또는 EXE에 C 및 C# 코드를 통합 할 수있는 무언가가 필요합니다.

기존 C 코드는 EXE가 아닌 라이브러리 (.lib)입니다.

+0

이 C 코드는 적절한 실행 파일입니까 아니면 라이브러리입니까? 어쨌든 C 라이브러리에 P/Invoke를 사용하거나 exe의 경우 실행하여 출력을 catch 할 수 있습니다. – RedX

+0

http://stackoverflow.com/questions/935664/possible-to-call-c-code-from-c –

+0

번역은 다음과 같습니다. C# 코드에는 포인터가 없으므로 포인터 기반 코드를 포인터 기반이 아닌 코드로 변환하는 것이 사실상 불가능합니다. –

답변

6

임시로 C++을 관리되는 C++로 컴파일하지 않고 .net 어셈블리를 얻고 반사판을 사용하여 C#으로 디 컴파일하면 어떨까요?

+1

) 이것은 자동으로 사용자가 얻을 수있는 것과 거의 비슷하지만 결과는 예쁘다. –

+0

감사합니다! 나는 이것을 시도 할 것이다. – Bobrovsky

+0

관리되는 C++ 코드를 컴파일 할 수 있습니까? – Qnan

0

저는 C#으로 코드를 변환하지 않고 DLL에서 직접 메서드를 사용하는 것이 가장 쉽다고 생각합니다. 이것은 잘 작동합니다. 하나의 단점은 여러 플랫폼에서 여러 바이너리를 제공해야한다는 것입니다. DLL에서 가져 오기 기능은 쉽게

[DllImport("kernel32.dll")] 
public static extern IntPtr GetProcAddress (IntPtr hModule, string procedureName); 

나는 하나의 DLL에서 전자를 변환하지 않고 가능하다 C 및 C# 코드를 모두 포함 생각하지 않는다

있다.