13,009
回編集
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> | |||
<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); | ||