유니티에 DLL 파일 연결하기

2020. 7. 29. 18:55개발/유니티

1. DLL프로젝트를 만들고 아래 코드로 헤더를 지정해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//visual studio에서 dll로 프로젝트 생성
//헤더 추가
//이름은 자유롭다. 나는 myFunc.h 라고 하겠다.
 
#ifdef 원하는이름_EXPORTS
#define 원하는이름_API __declspec(dllexport)
#else
#define 원하는이름_API __declspec(dllexport)
#endif
 
extern "C" 원하는이름_API 자료형 함수명(자료형 매개변수);
 
//헤더 예문
 
#ifdef MYLIBRARY_EXPORTS
#define MYLIBRARY_API __declspec(dllexport)
#else
#define MYLIBRARY_API __declspec(dllexport)
#endif
 
extern "C" MYLIBRARY_API int myfunction(int inputValue);
 
cs

 

 

 

2. 헤더랑 cpp파일을 다 썼다면 이제 빌드를 해주자.

1
2
3
4
5
6
7
8
9
10
11
12
13
//cpp파일을 생성하고 헤더를 포함시켜주자.
//그리고 헤더에 맞는 함수 내용 추가
 
#include "myFunc.h"
 
int myfunction(int inputValue)
{
    int a = inputValue;
    int b = 55;
    
    return a + b;
}
 
cs

 

 

3. 생성된 dll파일을 유니티 프로젝트에 있는 Plugins폴더에 넣어주자.

 

 

 

 

 

 

4. dll파일의 이름을 아래 방법으로 넣고 만들어놓은 함수를 형태에 맞게 적용해보자.

1
2
3
4
5
6
7
8
9
10
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;
 
public class GameManager : MonoBehavior
{
    [DllImport("dll파일이름")]
    public static extern 자료형 함수명(자료형 매개변수);
}
cs

 

 

5. 유니티에서 C++함수가 적용되는 것을 확인할 수 있다.

 

 

참고하면 좋은 자료형

C C#
HANDLE, void*, 일반 pointer IntPtr
BYTE, unsigned char Byte
short Short
WORD, unsigned short Ushort
int int
UNIT, unsigned int uint
long int
BOOL, long int
DWORD, unsigned long uint
char char
LPSTR, char* string, StringBuilder
LPCSTR, const char* string, StringBuilder
BSTR string
float float
double double
HRESULT int
VARIANT object