かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

UnityからCの関数を呼ぶ(プラグインの作り方)

苦痛。

Win32プロジェクトを作る。64bit環境なら64bitでdllを作るようにすること。

// Header.h
extern "C"
{
    __declspec (dllexport) int Add(int x, int y);
}
// Win32Project1.cpp : DLL アプリケーション用にエクスポートされる関数を定義します。
//

#include "stdafx.h"

__declspec (dllexport) int Add(int x, int y)
{
    return x + y;
}

ヘッダーは適当なところでincludeしておくといい。

DLLのコピー

UnityのAssets/PluginsにDLLをコピーする。

相互運用のコードを書く

適当なBehaviourあたりに以下のコードを書いたら動いた。

 [DllImport("Win32Project1")]
 private static extern int Add(int x, int y);

 // Use this for initialization
 void Start()
 {
     Debug.Log(Add(10, 20));
 }