.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. C#
  5. C++のdllをC#で呼び出し方法とは?Visual Studio 2019での事前準備から紹介!

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

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

    システム
    エンジニア
    C++のdllをC#で呼び出し方法を教えてください。

    プロジェクト
    マネージャー
    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の呼び出しが行われていることが分かります。

    システム
    エンジニア
    C++のdllをC#で呼び出し方法やコードの書き方がわかりました。

    プロジェクト
    マネージャー
    今回紹介した方法を参考に、実際にコードを書いて理解を深めましょう。

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

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

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Array新着案件New Job