C# 에서 C++ DLL 불러서 쓰기 #1
1. DllImport
DLL Import 시
[DllImport("CPPDLL.dll"] ,
혹은
[DllImport("CPPDLL.dll", CallingConvention = CallingConvention.Cdecl)]
쓰는 것을 볼 수 있다.
C#의 DllImport 특성은 기본 CallingConvention이 StdCall로 되어 있습니다.
DllImportAttribute Class
; https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(v=vs.110).aspx
DllImportAttribute.CallingConvention Field
; https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.callingconvention(v=vs.110).aspx
일반적인 코드는 __cdecl, __stdcall에 상관없이 C#에서는 명시적인 CallingConvention 없이도 잘 실행됩니다.
하지만 .Net 4.0 이상의 빌드 환경에서는
명시적인 CallingConvention 이 필요할 수 있습니다.
.Net 4.0 이상에서는
[DllImport("CPPDLL.dll", CallingConvention = CallingConvention.Cdecl)]
이 방법으로 사용하는 것을 추천합니다.
참고 : http://www.sysnet.pe.kr/2/0/11132 [C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (1) - x86 환경에서의 __cdecl, __stdcall에 대한 Name mangling]
'Programming > C#' 카테고리의 다른 글
C# 에서 C++ DLL 불러서 쓰기 [도움되는 링크들] (0) | 2018.02.13 |
---|---|
C# 에서 C++ DLL 불러서 쓰기 #2 (0) | 2018.02.13 |
C# 에서 C++ DLL 불러서 쓰기 #3 (0) | 2018.02.13 |
C# 프로그램 소스코드 경과시간 측정 (0) | 2017.12.28 |
Get Audio Device List (0) | 2017.12.27 |