C++との相互運用

データ型

C++のライブラリの利用

C++の静的ライブラリを、C#から利用する場合を考えます。

C++の静的ライブラリ (.lib)

C++のクラスを次のように定義し、header.hの名前で保存します。

class Lib
{
public:
    int Foo();
};

C++/CLIの動的ライブラリ (.dll)

次にC++/CLIで、C++のラッパーを作成します。

public ref class Wrapper
{
public:
    int Bar();
};

リンカの設定で依存ファイルにC++のライブラリを追加し、それを読み込みます。

#include <header.h>

int Wrapper::Bar()
{
    Lib* lib = new Lib();
    int foo = lib->Foo();

    return foo;
}

C#のアプリケーション (.exe)

C#ではC++/CLIのライブラリを、参照の設定から追加します。

class Program
{
    static void Main(string[] args)
    {
        Wrapper wrapper = new Wrapper();
        int bar = wrapper.Bar();
    }
}

参考

参考書

MSDN (Microsoft Developer Network) から検索