1exeからの外部DLLの読み込み
1.1exeからの外部DLLの呼び出し
動作環境に「exe」を指定したた場合、他の言語で作成したx64向けDLLを呼び出すことができます。 例えばC++で図1-1のように書き、Visual C++でx64向けにコンパイルしてDLLを作成します。
出来上がったDLLが「test_dll.dll」という名前だったとすると、Kuin側のプログラムは図1-2と書くことでDLL内の関数を呼び出せます。
1行目のように「func[DLLのファイル名,DLL内の関数名]任意の関数名(引数):戻り値」という関数を定義しておくことで、5行目のようにDLL内の関数をKuinの関数として呼び出すことができます。
1行目のようなDLLの関数定義の中身に処理を書くと、その処理を行ってからDLLが呼び出されますが、必要なければ空にします。 DLLのファイル名は、拡張子を「.dll」以外にしても扱えます。
さて最後にtest_dll.dllを、Kuinが生成したexeの配下にコピーする必要があります。 メニューの「編集」の「その他の設定...」を選び、関連ファイルに「test_dll.dll」を追加します。 これでexe配下の「data」フォルダ以下にtest_dll.dllが自動コピーされ、exeから呼び出せます。
CUI環境で実行すると、画面に「25」と表示されます。
1.2値型
Kuinの値型(非参照型)は、DLLの関数の引数や戻り値の型と、表1-1の対応関係があり、そのままやりとりできます。
Kuinの型 | DLLの型 |
---|---|
int | 8byte 符号あり整数型 |
float | 8byte 浮動小数点型 |
char | 2byte 文字型(UCS-2) |
bool | 1byte 論理型 |
bit8 | 1byte 符号なし整数型 |
bit16 | 2byte 符号なし整数型 |
bit32 | 4byte 符号なし整数型 |
bit64 | 8byte 符号なし整数型 |
enum | 8byte 符号あり整数型 |
1.3参照型
Kuinの参照型は、ガーベージコレクションでメモリ管理をしているため、DLL側で書き換える場合には注意が必要です。 ルールが複雑なため、通常はDLL側では書き換えずに読み取り専用で扱うと良いでしょう。
(このページは執筆中です!)