C++のdllをC#で呼び出し方法とは?Visual Studio 2019での事前準備から紹介!

公開日時:   更新日時:
C++のdllをC#で呼び出し方法とは?Visual Studio 2019での事前準備から紹介!
基本情報技術者試験の試験対策はこちら>>

SE
C++のdllをC#で呼び出し方法を教えてください。

PM
C++のdllをC#で呼び出し方法や事前準備などについて紹介します。

C++のdllをC#で呼び出しとは?


C#でC++のdllの呼び出しを紹介します。
過去にC++で作成した関数をC#で使いたい場合、C++の関数をdll(ダイナミックリンクライブラリ)にしてC#でそれを呼び出すことが可能です。

これを行うにはちょっとしたテクニックが必要になります。それをVisual Studio 2019を使って説明します。

C++のdllをC#で呼び出しをするにはマーシャリングの処理が必要

そもそもC++とC#はシステムが異なります。そこで異なるシステム間でデータを交換できるようにするための処理、つまり、マーシャリングの処理が必要です。

単純にC++のdllをC#で呼び出すことはできません。それはC#とC++のメモリへの配置が基本型以外では異なっているためです。しかし、マーシャリングの処理を行えばC#でC++のdllの呼び出しが可能になるのです。

Visual Studio 2019での事前準備

C#でC++のdllの呼び出しを行うためにVisual Studio 2019での事前準備に取りかかりましょう。Visual Studio 2019を起動させたら、まず、C#の.NET Frameworkのコンソールアプリケーションを選択し、それをここでは「ConsoleApp1」と名付けます。

次に呼び出しに使うC++のdll作成です。右の「ソリューションエクスプローラー」の「ソリューション」を右クリックしてそこで現われる「追加」の中の「新しいプロジェクト」を選択した後、C++のダイナミックライブラリ(.dll)を選択し「CPlusDLL」と名付けます。これで呼び出しに使うdllの作成準備完了です。

コードを書く

それではコードを書いていきます。
・ヘッダーファイル
・C++の関数
・C#のソースコード
・Visual Studio 2019の設定
・デバッグ

この順番で進めていきます。

C++のヘッダーファイル

「ソリューションエクスプローラー」の「CPlusDLL」を右クリックして「追加」の「新しい項目」を選択し、その中から「ヘッダーファイル」を選び、「dellExport.h」と名付けます。

ソースコードは次の通りです。

なお、

をヘッダーファィルに書き込んでいます。

C++のソースコード

C++のソースコードを見てみましょう。「ソリューションエクスプローラー」の「CPlus」を右クリックして「追加」の「新しい項目」で「C++ソースコード(.cpp)」を選択。「CPlus.cpp」と名付けます。

C#のコード

C#のソースコードです。「ConsoleApp1」で自動生成された「Program.cs」にソースコードを書き、C++のdllの呼び出しを行います。第一の方法としてDllImport関数の第一引数に呼び出しされるCPlusDLL.dllの絶対パスのソースコードを紹介します。後に、絶対パスを書かない方法を紹介します。

絶対パスを指定する方法

第一の方法としてDllImport関数の第一引数でCPlusDLL.dllへは絶対パスで指定しなければいけません。\\path\\to\\となっているのは各人の設定環境に合わせて下さい。

プロパティを編集する方法

DllImprt関数の第一引数にどうしても絶対パスを指定したくないという場合は「ソリューションエクスプローラー」の「CPlusDLL」を右クリックして、プロパティを選択します。「全般」の中で、「出力ディレクトリ」を編集します。左上で「アクティブ(Debug)」を選択した場合は「出力ディレクトリ」の「編集」をクリックして「$(SolutionDir)bin\Debug」に編集します。

次に左上で「Release」を選択し、「出力ディレクトリ」を「$(SolutionDir)bin\Release\」に編集します。

プロパティを編集したときのコード

プロパティを編集したら、Program.csのソースコードは次の通りです。

バッチビルド

ビルドを行う前にすることがあります。Visual Studio 2019の「ビルド」をクリックし、「バッチビルド」を選択します。「ビルド」のチェックボックスで、「ConsoleApp1」は全てチェックを入れ、「CPlusDLL」は「x64」にのみチェックを入れます。そして「ビルド」を行うと、エラーなしに正常終了するはずです。

デバッグ

Visual Studio 2019の上部真ん中にある「開始」をクリックしてデバッグを行います。きちんとCPlusDLL.dllを呼び出ししていれば、コマンドプロンプトが立ち上がり、次のように表示されれば成功です。

C++で定義した関数が行われきちんとCPlusDLL.dllの呼び出しが行われていることが分かります。

SE
C++のdllをC#で呼び出し方法やコードの書き方がわかりました。

PM
今回紹介した方法を参考に、実際にコードを書いて理解を深めましょう。

C++のdllをC#で呼び出し

システムの違うC++のdllをC#で呼び出しすることの例を紹介しました。
・Visual Studio 2019の設定
・ソースコード
・デバッグ
以上でC#でC++のdllの呼び出しに成功しました。興味のある方は自分でソースコードを書いて実際に行ってみて下さい。


FEnetへの登録は左下のチャットが便利です 経験者優遇! 最短10秒!

.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags