C#などで作った外部の「マネージドな.dll」の読み込み概要一般論の話をしますと、「C#」「VB.net」「C++/CLI」「F#」「JScript.net」などで作成したdllを「マネージドなアセンブリdll」として読み込む場合、 C#のソースから.dllを作成。最小限のサンプルとするため、わかりやすい構成としましょう。 hmPy/IronPython自体は、.NET Framework 4.0で構成されていますが、
とします。 コンパイルし、TestSample.dllといった名前にしたとしましょう。 using System; namespace TestNameSpace { public class TestClass { public TestClass() { } public int TestFunc(int x) { return x + 3; } } } マクロファイルの置き場所(currentmacrodirectory)も「.dllの置き場」とみなしますので、 もしも、対象の.dllがマクロファイルや秀丸ディレクトリとは異なる場所にあるのであれば、 以下のように書けます #PY = loaddll( hidemarudir + @"\hmPy.dll" ); #_ = dllfuncw(#PY, "DoString", R"IRONPYTHON( import clr clr.AddReferenceByPartialName("TestSample") # dllの名前を拡張子など抜きで from TestNameSpace import * obj = TestClass() # オブジェクトの作成 result = obj.TestFunc(10) # dll内で3を足した値を返すので、結果は13 hm.debuginfo(result) hm.Macro.Var['#num'] = result hm.Macro.Eval(r""" message(str(#num)); """); )IRONPYTHON" ); freedll( #PY );
もしも、対象の.dllがマクロファイルや秀丸ディレクトリとは異なる場所にあるのであれば、 以下のように書けます #PY = loaddll( hidemarudir + @"\hmPy.dll" ); #_ = dllfuncw(#PY, "DoString", R"IRONPYTHON( import clr sys.path.append(r"C:/abc/mydir") # 独自の.dll置き場など clr.AddReferenceByPartialName("TestSample") # dllの名前を拡張子など抜きで from TestNameSpace import * obj = TestClass() # オブジェクトの作成 result = obj.TestFunc(10) # dll内で3を足した値を返すので、結果は13 hm.debuginfo(result) hm.Macro.Var['#num'] = result hm.Macro.Eval(r""" message(str(#num)); """); )IRONPYTHON" ); freedll( #PY ); |