# Unity C# 스크립트에서 C/C++/C# 함수 호출

> Call functions from your C or C++ code in your Unity project.

Unity 프로젝트의 C, C++, C# 플러그인에서 함수를 호출할 수 있습니다.

Unity는 Emscripten을 사용하여 C/C++/C# 코드에서 소스를 WebAssembly로 컴파일하므로 C/C++/C# 코드에서 플러그인을 작성하고 Unity C# 스크립트에서 이러한 함수를 호출할 수 있습니다.

대신 JavaScript 플러그인에서 함수를 호출하려면 [Unity C# 스크립트에서 JavaScript 함수 호출](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md)을 참조하십시오.

## C/C++/C# 플러그인을 Unity 프로젝트로 임포트합니다.##import-your-c/c++/c-plug-in-into-your-unity-project

Unity 프로젝트가 C/C++/C# 플러그인 코드에서 함수를 호출하도록 하려면 Unity 프로젝트에 플러그인을 임포트해야 합니다.

`Assets/JSPlugins` 같은 폴더에 JavaScript 플러그인 파일을 넣습니다.

## Unity에서 사용할 수 있는 C++ 코드 예시##example-c++-code-that-you-can-use-in-unity

C++(.cpp)를 사용하여 플러그인을 구현하는 경우 네임 맹글링 문제를 피하기 위해 C 링크(`extern “C”`)에 함수를 선언해야 합니다. 다음은 Unity 프로젝트에서 호출할 수 있는 간단한 함수가 포함된 C++ 플러그인 예제 코드입니다.

```cpp
#include <stdio.h>

extern "C" void Hello ()
{
    printf("Hello, world!\n");
}

extern "C" int AddNumbers (int x, int y)
{
    return x + y;
}
```

**참고**: Unity는 Emscripten 버전 2.0.19 툴체인을 사용하고 있습니다.

Unity 프로젝트에서 다음 Unity C# 코드를 사용하여 C++ 함수를 호출합니다.

```cs
using UnityEngine;
using System.Runtime.InteropServices;

public class NewBehaviourScript : MonoBehaviour {

    [DllImport("__Internal")]
    private static extern void Hello();

    [DllImport("__Internal")]
    private static extern int AddNumbers(int x, int y);

    void Start() {
        Hello();
        
        int result = AddNumbers(5, 7);
        Debug.Log(result);  
    }
}
```

## 추가 리소스##additional-resources

* [브라우저 스크립팅과 상호작용](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting.md)

* [JavaScript 플러그인 설정](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js.md)

* [Unity C# 스크립트에서 JavaScript 함수 호출](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md)

* [JavaScript에서 Unity C# 스크립트 함수 호출](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-unity-to-js.md)

* [Unity C#, JavaScript 및 C/C++/C# 코드 간 콜백 생성](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-example.md)
