-
-
2015年7月9日 08:10
abstract
- ツクールを買います
- とりあえず無料のVisualStudio2013Communiyをダウンロードします(もうすぐVS2015がでますん)
- VS2013でDLLを作ります
- ツクールで読み込んで使用します。
- ね。簡単でしょう?
対象想定
- RGSSからAPI呼び出したことがある。がんばれば出来そう
- C言語入門をちらみしたことがあるかもしれない
とりあえず今回は開発環境の準備。なんかよく分からんけどDLL作れたくらいを目標に。
ソイソース
VisualStudioダウンロード
https://www.visualstudio.com/ja-jp/downloads/download-visual-studio-vs.aspx ここの
Visual Studio Community 2013 Update 4で
言語パックもいれとくといいかも
プロジェクト作成
- VisualStudio起動
- 新規作成=>プロジェクト
- VisualC++のWin32プロジェクトを選択
- 名前とソリューション名はとりあえず”tktk”で
- 種類:DLL. オプション:空のプロジェクト、SDLはとりあえずオフで
- ソースにsample.cpp. ヘッダーにsample.h突っ込む
- ビルド=>ソリューションのビルドでDLLが出来ますん(プロジェクトフォルダのDebug辺り)
このままだと特定のCRT(C言語系のランタイム)が入っていないと動かないDLLになっちゃうので 構成プロパティ>C++>コード生成>ランタイムライブラリ>をMTにしとくとよさげです
とりあえず DLLから数値を返すメソッド DLLないで引数をかけ算して返すだけのメソッド ですん
omake
大昔書いたデバッグウインドウのソース。色々きたない。
-
2015年7月12日 22:32
前回のソースの解説みたいなの
sample.h
extern "C"{ __declspec(dllexport) int Version(void); __declspec(dllexport) int Calc(int, int); }
関数の定義とマングリング防止のおまじないです。※マングリング:cppのコンパイラでコンパイルすると名前が複雑に変換されてしまう。(オーバーライド等があるため)
sample.cpp
#include #include "sample.h"
ヘッダファイルの取り込みウィンドウズもろもろとさっきのヘッダ。 Pathを「<>」で囲むとデフォルトのパスから。ダブルクォーテーションで囲むとファイルのパスから探すようになります。
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: break;
case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break; } return TRUE; }
DLLを組み込んだときとか解放するときに呼ばれる関数です。とりあえず書いときましょう。 関数呼び終わったら大体すぐDLLの解放処理が呼ばれますが走でないときもあります。変数のスコープ等には注意しましょう。 ツクールを×ボタンで終了したときとかは呼ばれないこともまれによくあるので最後に必ず実行しないと逝けない処理とかはここに依存しない方がいいです。
/* 整数をだけの関数 */ int Version(void) { return 838861; }
数字を返してるだけです。バージョンとかリビジョンとか返すようにしてると後々助かることもあるかも。
/* 引数二つをかけて返すだけ */ int Calc(int x, int y) { return x * y; }
引数二つをかけ算して返してるだけです。 入出力が数値だけですむなら大体こんな感じで逝けます。
文字列等の数値以外の型はポインタとか参照とか呼ばれるメモリ上の住所に当たる数字を指定したり返したりします。その辺は次回
このナレッジに返信するにはログインしてください。