[연습] 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 으로 교체 해주면 정상적인 결과를 볼 수 있다.
[계속 작성중 ...]
'C++(oF)' 카테고리의 다른 글
TinyXML 간단 사용법 (0) | 2015.04.20 |
---|---|
ifstream 을 이용하여 텍스트 파일 읽기 (0) | 2015.04.20 |
[연습] C++ DLL 를 C#에서 사용하기 (0) | 2015.04.16 |
[VisualStudio] 정적라이브러리 lib 추가 방법 정리 (2) | 2015.04.14 |
Poco 라이브러리 설치하기 (윈도우 비주얼 스튜디오) (2) | 2015.02.12 |
화면 캡처 예제 (0) | 2015.02.02 |
C++(oF)
2015. 4. 16. 14:34
댓글을 달아 주세요