DLL(動的リンクライブラリ)またはSO(共有オブジェクト)

MotionSolveでは、2つの別々のレベルのユーザーDLL/SOがサポートされ、そのアルゴリズムによって、明確に指定されたライブラリから始めて、各シンボルが解決されます。要素レベルのDLL/SO(要素毎に指定された)およびマシンレベルのDLL/SOを作成することが可能です。

これらは下記のように定義できます:
  1. 要素レベル - 要素定義内にDLL/SO の名前を指定します。以下に例を挙げます。
    <Constraint_Coupler
         id                  = "1"
         label               = "TwoJoint"
         joint1_id           = "30603030"
         joint2_id           = "30602031"
         freedom_1           = "T"
         freedom_2           = "T"
         usrsub_param_string = "USER(-8.5)"
         usrsub_dll_name     = "C:/work/testsub.dll"
         usrsub_fnc_name     = "coupler_function" >
    </Constraint_Coupler>
    usrsub_dll_name引数は、このカプラー要素について、要素レベルのDLL/SOとしてC:/work/testsub.dllを定義します。任意の要素で異なるDLL/SOを参照できるように定義できます。
  2. マシンレベルのDLL/SO

    環境変数MS_USERSUBDLLを作成し、それをDLL/SOファイルに設定することが可能です。この環境変数は、MotionSolveがインストールされた際に自動的に定義されるものではありません。ただし、インストレーションのフォルダ<install-path>\hwsolvers\usersub\subdll\<platform>に、FortranおよびC/C++のDLL/SOが用意されています。これは、ユーザーサブルーチンDLLを使用するテストモデルの一部をユーザーが実行できるようにするためです。

    どのDLL/SOを読み込み使用するかの選択は、"明確に指定された"規則、すなわち、1.要素レベルのDLL/SOは、2.マシンレベルのDLL/SOに優先することに基づきます。