「ライブラリの基礎 - C++DLL」の版間の差分

ナビゲーションに移動 検索に移動
283行目: 283行目:


== 整数型および浮動小数点型のマーシャリング ==
== 整数型および浮動小数点型のマーシャリング ==
C++ DLLの作成方法は[[ライブラリの基礎 - DLLの作成(C/C++/MFC)|ライブラリの基礎 - DLLの作成(C/C++/MFC)]]を参照する。<br>
==== Linux ====
下記に、Linux向けC++ライブラリを記述する。<br>
<syntaxhighlight lang="c++">
// SampleLib.cpp
#include <cstdio>
#include <cstring>
extern "C" int __attribute__((visibility("default"))) SampleFunc01(int a)
{
    printf(--<SampleDll:SampleFunc01>--\r\n");
    printf("a = %d\r\n", a);
    printf("---------------------------\r\n");
    return 10;
}
extern "C" double __attribute__((visibility("default"))) SampleFunc02(double a)
{
    printf("--<SampleDll:SampleFunc02>--\r\n");
    printf("a = %f\r\n", a);
    printf("---------------------------\r\n");
    return 3.14;
}
</syntaxhighlight>
<br>
==== Windows ====
Windows向けC++ DLLの作成方法は[[ライブラリの基礎 - DLLの作成(C/C++/MFC)|ライブラリの基礎 - DLLの作成(C/C++/MFC)]]を参照する。<br>
<br>
<br>
下記にもC++ DLLを記述する。<br>
下記に、C++ DLLを記述する。<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
  // SampleDLL.h
  // SampleDLL.h
330行目: 357行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== Linux / Windows ====
次に、C# EXEからC++ DLLを呼び出す方法を記述する。<br>
次に、C# EXEからC++ DLLを呼び出す方法を記述する。<br>
<br>
<br>
341行目: 369行目:
     class Program
     class Program
     {
     {
       [DllImport("SampleDLL.dll")]
       [DllImport("SampleDLL.dll")] // Windows
      [DllImport("SampleLib.so")]  // Linux
       private static extern int SampleFunc01(int a);
       private static extern int SampleFunc01(int a);
   
   
       [DllImport("SampleDLL.dll")]
       [DllImport("SampleDLL.dll")] // Windows
      [DllImport("SampleLib.so")]  // Linux
       private static extern double SampleFunc02(double a);
       private static extern double SampleFunc02(double a);
   
   

案内メニュー