'DllImport'에 해당되는 글 1건

  1. 2012.11.30 DllImport String Parameter 전달
Note2012. 11. 30. 11:29

DllImport String Parameter 전달



C#에서 C나 C++의 기능을 사용하기 위해서는

C나 C++로 만든 dll을 이용해야 합니다.

int 형이나 uint, byte, char 등을 함수에서 사용할 경우에는 큰 어려움이 없지만

char[]이나 char*을 사용해 string을 전달할 때에는 곤란한 상황을 맞게 됩니다.

unsafe를 사용하는 방법도 있지만 다른 방법도 있습니다.


Dll과 C# 사이에서 unsafe를 사용하지 않고 string parameter를 전달하는 방법을 알아보겠습니다.


먼저 dll 내부의 함수 원형입니다.

Process의 이름을 입력하면 해당 process가 load 될때까지 기다렸다가

PID를 return 해주는 간단한 함수입니다.

Calling convention은 standard call 입니다.


C#에서 DllImport를 사용하는 부분입니다.

DWORD는 uint로

const char*는 Byte[]로 처리했습니다.


C#에서 함수를 사용하는 부분입니다.

Encoding을 통해 string을 byte array로 변환합니다.

변환된 byte array를 함수로 넘겨주면 정상적으로 작동합니다.


반대로 return 값이 string 형태라면

C#에서 함수의 return type을 byte array로 선언해주고

Return 받은 값을 char array로 encoding 해주면 됩니다.


'Note' 카테고리의 다른 글

Windbg symbol path  (0) 2015.02.03
FILE Structure  (0) 2012.12.27
Visual Studio 2010 IDE 설정  (0) 2012.11.29
IE Single Process 설정  (0) 2012.10.19
Posted by slimV