たくのろじぃのメモ部屋スマートフォン用の表示で見るたくのろじぃのメモ部屋プログラミング(C#)の基礎やそれを応用した技術情報をメモしておくブログです。StudioTweet最近、ある友人にC言語を教えているのですが、ふと思ったことがあります。「C言語ってC#から読み込めるのかな?」と。DLLファイルの作成C言語やC++言語はDLL(ダイナミックリンクライブラリ)ファイルにすれば読み込めるとのことです。DLLファイルを作っていきます。プロジェクトを2つに分ける必要があります。「ソリューション」と「プロジェクト」で使い分けているのかがようやく分かりました(笑)まずはC#のプロジェクトですね。できたらソリューションエクスプローラーから新規プロジェクトを追加します。私はC++の空のプロジェクトを選びました。2つのプロジェクトが作成されました。ソースコードを書く後は普通にC言語を書いていけばいいのですが、その前に約束事を記述していきます。ヘッダーファイルを書きます。main();これでDLLにするための関数を定義できました。main関数を呼び出せるようになります。ファイルを追加して普通にC言語を書いていきます。C++も書けますが、それは別の記事で紹介します。プロパティを変更するこのままビルドしても実行可能形式(.exe)が生成されてしまうので、DLLを生成するように変更します。C++のプロジェクトを右クリックして、"プロパティ"をクリックするとプロパティページが表示されます。これでビルドしてみます。いうディレクトリに保存されているみたいですね。次のように記述します。}}DLLImportでDLLファイルを指定する際には、先ほど生成されたDLLファイル名を記述します。これで準備はできたように思えますが、このまま実行すると例外が発生します。DLLファイルが見つからないようです。答えはプロジェクトによって、ビルドの出力先ディレクトリが異なるからです。DLLApp\DLLApp\bin\Debug\netcoreapp3.0C#のほうが階層が深く、そのディレクトリ内でDLLを参照しようとするために例外が発生してしまうのです。解決する方法はいくつかあります。2番目と3番目はどちらもビルドしてみないと正確なパスが分かりません。4番目は配布されている場合は良いかもしれませんが、同じソリューションで開発している場合、DLLを変更するたびに毎回コピペする必要があり非効率です。各プロジェクトでプロパティを設定します。