[연습] C++ DLL 를 C#에서 사용하기


2종류의 프로젝트를 준비 한다. 


1). C ++ DLL 프로젝트 

(Visula C++ -> Win32 -> Win32 Console Application ) 의 Application type 은 [ DLL ] 로 설정하고 프로젝트를 생성 하자.



2). C# Console Application 프로젝트




* 아주 기초적인 연동


ㅁㅁ


1)에서 만들어진 cpp 문서에 아래와 같이 타이핑 하자.



#include "stdafx.h"
#define EXTERN __declspec(dllexport)

extern "C"
{
    EXTERN int ADD(int a , int b)
    {
        return a + b ;
    }
}

아주 단순한 덧셈 함수 이다.



이제 c# 에서 사용법은 아래와 같다.



class Program
    {
        [DllImport("ExExtern")]
        private static extern int ADD(int a, int b);

        static void Main(string[] args)
        {
            int result = ADD(3 , 2);
            Console.WriteLine(result);
        }
    }

ㅁㅁㅁ



편리하게 테스트 하기위하여 두 프로젝트의 빌드 폴더를 일치시켜 준다. 

참고로 C++ 프로젝트의 빌드 장소 설정은 

프로젝트 속성 -> Configuration Properties -> General -> Output Directory 에서 맞춘다. 이 경우 모두 " ../Debug " 로 설정 했다.



이제 C++ 쪽 빌드를 해보면, 이상 없이 DLL 파일을 생성 할 것이고 , C# 쪽도 빌드 를 해보자. 그런데 x64 시스템에서는 아래와 같은 에러를 보여준다.




예전에 EmguCv 나 여타 네이티브 DLL 를 사용하면서 흔히 봐왔던 메시지 이다. 

말이 어렵지만 사실 플랫폼이 맞지 않아서 이다.


C++ DLL 은 32비트로 빌드 되었고 , C# 은 기본적으로 x64 에서 실행 되기 때문이다. 

C# 의 플랫폼 설정은 


프로젝트 속성 -> Build -> Platform target 에서 x86 으로 교체 해주면 정상적인 결과를 볼 수 있다.



[계속 작성중 ...]

Yamecoder 야매코더_
C++(oF) 2015.04.16 14:34
Powerd by Tistory, designed by criuce
rss