Skip to content

default option系定数をC/C++以外(主にC#)から取得する場合に煩雑になる #549

@shigobu

Description

@shigobu

内容

Coreの新しいvvm-async-apiでは、voicevox_versionやdefault optionを取得する方法が、関数からDLL埋め込み定数に変更されました。C/C++で取得する場合は、通常の変数と同じように使えます。
しかし、C#で取得する場合、LoadLibraryGetProcAddressを使用する必要がありコード量が増えます。また、LoadLibraryGetProcAddressはWin32APIであり、クロスプラットフォーム対応する場合にはOSごとに処理を記述する必要があり、さらにコード量が増え複雑になります。 C#の新しいフレームワーク(.NET Core 3.0以降)では、LoadLibraryGetProcAddressクロスプラットフォーム対応版が標準で用意されているようでした。

関数として定義されている場合には、簡単なコードで使用できます。
以前のように、関数として定義されていると嬉しいです。

Pros 良くなる点

C#から使う場合に、簡単なコードでdefault optionを取得できる。

Cons 悪くなる点

構造体の初期値を取得するだけなのに、関数を呼ぶ必要がある。

実現方法

#503 で実装されているので、これを無かったことにする??

VOICEVOXのバージョン

2023/07/26現在のmainブランチ

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

#503 (comment)
での発言にあるように、定数のドキュメントがヘッダーファイルに反映されない問題があります。これも、関数に戻すことで解消されるかと思います。

また、Windowsで使用するためのdllinport定義が自動で作成されない問題もあります。
これも、関数に戻すことで解消されると思います。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions