Cmdline Hello

C++/CLI 始めまして DLL

コマンドプロンプトを起動して Commandline から Hello.dll を作成します。
全角文字が表示されることを確認するために「始めまして」を含めています。

前田稔(Maeda Minoru)の超初心者のプログラム入門

ref DLL の作成

  1. Visual Studio のプロジェクトから構築する方法は、プロジェクトの設定や名前の関連が煩わしく、解り難くなります。
    それに対してコマンドプロンプトを起動して Cmdline から DLL を作成するとすっきりします。
    しかし良い事ばかりではありません。
    コンパイル&リンク共に多くのスイッチ(パラメータ)があり、その使い方や組み合わせが問題です。
    私も Hello.dll で幾つかの組み合わせを試してみましたが、C++/CLI では OK でも C# から呼び出すことは出来ませんでした。
    スイッチの説明は、次のコマンドをタイプすると表示されます。
    C:\DATA\Cpp\DLL\>CL /HELP
    C:\DATA\Cpp\DLL\>LINK /HELP
    また Visual Studio のプロジェクトを構築したときに[プロジェクト][プロパティ][構成プロパティ][C/C++][コマンドライン]を調べて下さい。
    リンカーのオプションは[プロジェクト][プロパティ][構成プロパティ][リンカ][コマンドライン]から調べます。
  2. 私は DLL をテストするために専用のフォルダー(C:\DATA\Cpp\DLL\)を作成しました。
    [スタートメニュー]から[すべてのプログラム][Microsoft Visual Studio 2005][Visual Studio Tools] [Visual Studio 2005 コマンド プロンプト]から起動します。
    C:\Users\maeda>CD C:\DATA\Cpp\DLL
    C:\DATA\Cpp\DLL\>CL /HELP
  3. フォルダーに Hello.h, Hello.cpp, HelloMain.cpp を格納して下さい。
    ref Mode の Object Class(Class1)を定義しています。
    Hello.h のソースコードです。
    //Hello.h
    #pragma once
    using namespace System;
    
    namespace Hello {
        public ref class Class1
        {
          public:
            void MsgPrint();
        };
    }
    
    Hello.cpp のソースコードです。
    //Hello.cpp
    #include "Hello.h"
    
    namespace Hello
    {
        void Class1::MsgPrint()
        {
            Console::WriteLine(L"C++/CLI 始めまして DLL");
        }
    }
    
    HelloMain.cpp のソースコードです。
    //HelloMain.cpp
    using namespace System;
    using namespace Hello;
    
    int main(array ^args)
    {
        Class1^ cls = gcnew Class1();
        cls->MsgPrint();
        System::Console::ReadLine();
        return 0;
    }
    
  4. 実行の手順です。
    1. Hello.h, Hello.cpp をコンパイルして Hello.dll を作成します。
      C:\DATA\Cpp\DLL\>CL /CLR /MDd /LD Hello.cpp
    2. Hello.dll を組み込んで実行する Main() プログラムを作成します。
      C:\DATA\Cpp\DLL\>CL /CLR /MDd HelloMain.cpp /FU "Hello.dll"
    3. Main() プログラムを実行します。
      C:\DATA\Cpp\DLL\>HelloMain.exe
      C++/CLI 始めまして DLL
      C:\DATA\Cpp\DLL\>
  5. Hello.dll を DLL Hello class に組み込んで実行してみて下さい。
    ここで作成した Hello.dll は、残念ながら C# から呼び出すことは出来ませんでした。

超初心者のプログラム入門(C/C++)