유니티에 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 |
'개발 > 유니티' 카테고리의 다른 글
유니티로 Json 사용하기 (0) | 2020.09.01 |
---|---|
이미지 크기를 일정하게 늘리기 (0) | 2020.08.04 |
안드로이드 유니티에서 다른 애플리케이션 실행하기 (0) | 2019.09.23 |
유니티로 안드로이드 엑티비티 간 통신하기 (0) | 2019.06.10 |
유니티에서 지저분한 PNG 이미지를 깔끔하게 하기 (0) | 2019.05.28 |