アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual Basic 2010 でDLLを作成し,IronPython 2.6 で使用したいのですがエラーが出て動きません。
何かアドバイスがありましたらお願いします。

・DLLの作成
Visual Basic の新規プロジェクトを”クラスライブラリ”として作成
(.NET Framework 2.0)

Public Class aaa
Public Sub bbb()
MsgBox("AAA")
End Sub
End Class


・IronPython での呼び出し側

import os
import clr
import sys

clr.AddReferenceByPartialName("Microsoft.VisualBasic")
from Microsoft.VisualBasic import Interaction
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

clr.AddReferenceToFile("test_VB.dll")
import test_VB

aa = test_VB.aaa
aa.bbb()

実行すると,
TypeError: bbb() takes exactly 1 argument (0 given)
となってしまいます。
bbb()定義時には何も引数を指定していないのですが,
何を渡せばいいでしょうか?

よろしくお願いします。

A 回答 (1件)

REM IronPython初めて使う



REM VBのソースをコンパイルする際使用したIDEはMonoDevelop
REM まぁVisual StudioとSharpDevelop/MonoDevelopはMS OfficeとLibreOfficeみたいなもんだと思ってくれれば(以前誰かにわからん言われたorz)

REM なお、普通に作ると、プロジェクト名がデフォルトネームスペースに設定されたりするので消すのを忘れないようにしました。

REM ビルドは.NET 4.0向け

Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off

Imports System

Public Class Test2
Public Sub Test()
System.Console.WriteLine("Hello World")
End Sub
End Class



===================
作ったアセンブリ(Test2.dll)をD:\に配置。

で、使用したのはIronPython 2.7.2.1のzip版に含まれるインタープリタ(ipy.exe)。

で、正解は、コンストラクタでクラス名を引数に与えてインスタンスを生成した上で、
そのインスタンスから引数なしで呼び出すか(こっちの方が俺好み)、

import os
import clr
import sys
sys.path.append("D:\\")
clr.AddReferenceToFile("Test2.dll")
import Test2
a = Test2.__new__(Test2)
a.Test()

===================

あるいは、型名から呼び出して第一引数にオブジェクトを渡すか。

import os
import clr
import sys
sys.path.append("D:\\")
clr.AddReferenceToFile("Test2.dll")
import Test2
a = Test2.__new__(Test2)
Test2.Test(a)

一応そのへんのことは
http://readthedocs.org/docs/ironpython-test/en/l …
http://readthedocs.org/docs/ironpython-test/en/l …
Class Types
User-defined methods
あたりに書いてあると思う

実際にやってみたら、ともにHello Worldが表示された。
    • good
    • 0
この回答へのお礼

無事に動作しました。
ありがとうございました。

お礼日時:2012/05/18 00:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!