ブログ

割とコンピュータよりの情報をお届けします。

2018/8/8

Microsoft Visual Studio Express 2017 for Windows Desktop でDLL作成して使用

いろいろやってみて
Microsoft Visual Studio Express 2017 for Windows Desktop でDLL作成したらそれを使う際に注意があった。

具体的には「呼び出し規約」の設定である。

Visual C++で呼び合っている間にはあまり気にしていない。

標準的にdllを作ると呼び出し規約__cdeclなのかな
ただし,Windows APIなどは__stdcallなので,ここで作ったdllの関数は例えば.NETからDllImportで使う場合 呼び出し規約に合わせて設定を調整する必要がある。

__stdcallなら標準的に呼び出せるので__stdcallの方がよいかもしれない。

プロジェクトのプロパティから設定してもよいが,戻り値の型指定の後に__stdcallまたは__cdeclを書いた方がよいかもしれない。
プロジェクトのプロパティを設定するのは,別に間違いではない。ただ,自分で使う分には問題ないが,DLLを他の人が使うときにヘッダファイルに__stdcall/__cdeclを書いていないと呼び出し規約を特定する必要が出てしまう。

といってもx64では__stdcallなど無視されるらしい。

≫ Read More

2018/08/08 コンピュータ   TakeMe