Problem
前回は、Visual Studio CodeからSharedライブラリを作成しました。
C#からSharedライブラリを呼び出すには、P/Invokeを使うしかありませんが、Sharedライブラリ側で関数をExportする必要があります。
Visual C++**ならdefファイルでも定義するか、シンプルにC++/CLI**を使ってクラス経由で使えるようすることも一つの手ですが、Linuxでは後者は使えません。
Solution
前回と同じように、Visual Studio CodeからCMakeでテンプレートを作成し、Sharedライブラリを生成する状態まで準備します。
この状態で生成された*.soファイルをnmコマンドを -D オプションをつけて実行することで、ライブラリに含まれるシンボルを表示してみます。
1 | nm -D libTestCMake.so |
元のソースは
1 |
|
です。
シンボルにsay_helloという文字が見えます。
ですが、前後に不規則?な英数字が付与されています。
では、関数をExportしてみます。
ソースコードを下記のように修正し、ビルドした後、シンボルを表示してみます。
1 |
|
1 | nm -D libTestCMake.so |
今度は、say_helloという文字列が完全に表示されています。
無事に公開されているようです。