Windows環境向けの .dll ファイルをUbuntu上で作成する「クロスコンパイル」という非常に強力で便利な方法があります。
Ubuntu上でWindows向けのコンパイル環境(MinGW-w64)を構築する手順をステップ・バイ・ステップで解説します。Windowsで環境を作るよりもコマンド一発で終わるため、実は非常に簡単です。
ステップ 1:パッケージリストの更新
まずはUbuntuのシステムを最新状態にします。端末(ターミナル)を開き、以下のコマンドを実行します。
sudo apt update
sudo apt upgrade -y
ステップ 2:MinGW-w64(クロスコンパイラ)のインストール
Ubuntu上でWindows用の実行ファイル(.exe)やライブラリ(.dll)を作成するためのコンパイラをインストールします。
sudo apt install mingw-w64 -y
これだけで、Windows向けの64ビット版および32ビット版のC/C++コンパイラがすべてインストールされます。
ステップ 3:ネイティブコンパイラのインストール(推奨)
Ubuntu自身のプログラムをコンパイルするための標準ツールセットも入れておくと何かと便利です(すでにインストールされている場合も多いです)。
sudo apt install build-essential -y
ステップ 4:UbuntuでのDLLコンパイル方法
環境構築は以上で完了です。C++コードをUbuntu上でコンパイルして、Windows用の .dll を作成するには、以下のコマンドを使用します。
64ビット版のWindows向けにコンパイルする場合:
x86_64-w64-mingw32-g++ -shared -o 20_SMA_EMA.dll 20_SMA_EMA.cpp -Wl,--kill-at
x86_64-w64-mingw32-g++: 64ビットWindows向けのC++コンパイラです。-shared: DLL(共有ライブラリ)を作成するオプションです。-Wl,--kill-at: Windows API(__stdcall)特有の関数名の文字化け(@マークなどの装飾)を防ぎ、外部アプリケーションで正しく認識させるための必須オプションです。

コメント