2013-08-15 2 views
0

C로 작성된 매우 큰 오픈 소스 프로젝트 (OSP)와 C#에서 프런트 엔드 빌드를 결합하는 프로젝트에서 작업하고 있습니다. 현재 Visual Studio 2012 Express로 OSP를 컴파일하고이 프로젝트에서 모든 .exe, .dll 등을 생성하고 있습니다.C에서 비 관리 코드 (C) 사용 #

통합은 어떻게해야합니까? (.h/.c 파일에 대한 전체 액세스 권한이 있음을 기억하십시오.) IJW (그냥 작동) 메서드를 사용하여 시도했지만 실제로 새로 컴파일 된 .dll에 대한 참조를 가져올 수 없습니다. 그 외에도 C#에서 다양한 기능을 수행하는 방법을 잘 모르겠습니다. (.exe의 명령 줄 명령을 보내지 말고 ....하지 않기를 바란다.)

컴파일해야합니까? IJW에 대한 특수 옵션/매개 변수가있는 OSP 또는 코드 재 작성이 필요합니까?

답변

2

C로 작성된 DLL의 경우 해당 DLL에 대한 참조를 추가하는 대신 C#에서 동일한 선언을 작성해야합니다.

PInvoke이라고합니다.

class ABC 
{ 
    [DllImport("abc.dll")] 
    public static extern int FuncX(int x, int y); 
} 
+0

'[DllImport]'는 클래스 안에 있어야하지만 어떤 메소드 안에도 존재할 수 없다는 것에주의하십시오. – Tim

+0

이것보다 깨끗한 방법이 있습니까? (또는 적어도 깨끗한 선언), 매우 혼란 스럽습니다. – Mattisdada

+0

가져온 메소드를 보관할 클래스를 작성하십시오. 그것은 방법 당 2 라인 밖에 걸리지 않습니다. 나는 그것이 지저분하다고 생각하지 않습니다. – linquize