본문 바로가기

.NET/C#

Interoperatability .NET

닷넷으로 넘어오기전 많은 코드가 c나 c++ 네이티브 코드를 작성되었는데

닷넷으로 많은 플랫폼들이 전향이 되면서 애를먹고 있다. 기존의 네이티브 코드를 메니즈드 코드로 변환하기에는

많은 공수와 비용이 들기 때문이다. 이러한 문제점을 해결하기 위해 닷넷은 기존의 네이티브 코드를 사용할수 있는

방법을 제시하고 있다.

간단한 예를 P/Invoke 의 경우를 들어보자. (COM은 다른 방법으로 해야함)

namespace Helloes
{
class Hello
{
static void Main(string[] args)
{
Beep(1000, 2000);
}
[DllImport("kernel32.dll", SetLastError=true)]
private static extern bool Beep(uint freq, uint dur);
}


위의 코드에서 빨간색 부분을 유의해서 보자 kernel32.dll를 명시적으로 적어줬다.

이렇게 해서 실행하게 되면 실제적으로 kernel32.dll의 Beep메서드가 실행되게 된다.

다음번에는 Com을 호출해서 쓰는 방법을 보도록하겠다.