DLL
外部サイト
・C++ライブラリ(DLL)をUnity(C#)向けに作成して利用するシンプルな方法 ・【Unity】C#スクリプトをDLL化する手順 ・C#スクリプトをDLL化してUnityで使うDLLを用意する
C++の関数を外部ライブラリとしてDLL(動的リンクライブラリ)ファイルにコンパイルする方法を解説します。
以下は、Windows環境でVisual Studioを使用する方法を説明しますが、他のコンパイラやIDEを使用する場合でも概念は同じです。
手順
1. DLLプロジェクトの作成
Visual Studioを使用してC++ DLLを作成するためには、まずDLLプロジェクトを作成します。
-
Visual Studioを開く
Visual Studioを開き、「新しいプロジェクト」を作成します。 -
プロジェクトタイプの選択
「C++」を選択し、「DLL」を選択し ます。「空のプロジェクト」や「動的ライブラリ」を選択しても構いません。 -
プロジェクト名と保存先を設定
プロジェクトに名前を付け、保存場所を決めて「作成」ボタンをクリックします。
2. DLLとしてエクスポートする関数の定義
C++でDLLを作成する際、関数をエクスポートするには__declspec(dllexport)を使います。DLLからインポートする際には__declspec(dllimport)を使います。
以下のようにコードを記述します:
// example.h
#ifdef EXAMPLE_EXPORTS // EXAMPLE_EXPORTSが定義されていれば、dllのエクスポートを有効にする
#define EXAMPLE_API __declspec(dllexport)
#else
#define EXAMPLE_API __declspec(dllimport)
#endif
extern "C" { // C++の名前修飾を避けるためにextern "C"を使用
EXAMPLE_API void helloWorld();
}
// example.cpp
#include "example.h"
#include <iostream>
void helloWorld() {
std::cout << "Hello, World!" << std::endl;
}
__declspec(dllexport)は関数がDLLからエクスポートされることを示します。__declspec(dllimport)は関数がDLLからインポートされることを示します。extern "C"は、C++の名前修飾(mangling)を防ぎ、Cスタイルの名前で関数をエクスポートするために使用します。
3. プロジェクトのビルド設定
-
プロジェクトのプロパティ設定
プロジェクトを右クリックし、「プロパティ」を選択します。 -
C/C++ の設定
「C/C++」 > 「コード生成」 > 「ランタイムライブラリ」で「マルチスレッド DLL」を選択します。 -
出力設定
「構成プロパティ」 > 「リンカー」 > 「出力ファイル」でDLLの出力先を設定します。例:$(OutDir)example.dll
4. DLLのビルド
- ビルドの準備が整ったら、「ビルド」 > 「ソリューションのビルド」をクリックしてDLLをコンパイルします。
- 成功すると、
example.dllというファイルが出力フォルダに作成されます。