DLL(動的リンクライブラリ)またはSO(共有オブジェクト)
MotionSolveでは、2つの別々のレベルのユーザーDLL/SOがサポートされ、そのアルゴリズムによって、明確に指定されたライブラリから始めて、各シンボルが解決されます。要素レベルのDLL/SO(要素毎に指定された)およびマシンレベルのDLL/SOを作成することが可能です。
- 要素レベル - 要素定義内に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>
- マシンレベルの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に優先することに基づきます。