私はC#を使用してDLLを作成しました。どのようにIronPythonでDLLを使用しますか。私はclr.AddReference( "yxz.dll")を使ってdllを追加しようとしました。しかしそれは失敗する。私は、IronPythonスクリプトの実行ディレクトリにdllを置こうとしました。それでも、dllを参照しようとしているときに "名前xyzが見つかりません"と言います。IronPythonでC#dllを使用する方法
答えて
ファイルを探す場所がわからないため、ファイルを見つけることができないと思われます.clr.AddReference ...()関数の詳細については、hereを参照してください。
Creating .NET Classes Dynamically from IronPythonの例では、アセンブリを作成します(後でディスクに「DynamicAsm.dll」として保存されます)。それには「DynamicType
」というクラスが含まれていて、「test
」という静的メソッドが1つあります。このメソッドは4つの整数を取り、それらを加算します。
The nice thing is that this saves "DynamicAsm.dll" to disk. You can then start an IronPython interactive interpreter session and do the following :
>>> import clr
>>> clr.AddReference('DynamicAsm.dll')
>>> import DynamicType
>>> DynamicType.test(2, 3, 4, 5)
14
例はimport
文でクラス名を使用することに注意してください。
'import sys print sysを使用してください。clr.AddReferenceがdllをどこで探しているのかを判断するためにパス " – mydogisbox
私は実際にこれを外部から行うことはできますか?または、本当にclrをインポートして、IronPythonスクリプトのアセンブリへの参照を追加する必要がありますか?ここでは、静的にインポートしてスクリプト内で常に利用できるようにするアセンブリをいくつか持っています。 –
import clr
clr.AddReferenceToFileAndPath(r"C:\Folder\Subfolder\file.dll")
は、コメントでJeffが提案した最も単純な方法です。また、これは動作します:あなたはこれを使用することができます
import clr
import sys
sys.path.append(r"C:\Folder\Subfolder") # path of dll
clr.AddReference ("Ipytest.dll") # the dll
import TestNamspace # import namespace from Ipytest.dll
'clr.AddReferenceToFileAndPath'を使うこともできます。これはまさにそれです。 –
この動作は、IronPythonコンソールからのみ発生します。私がスクリプトを実行すると、それは問題ありません。 IronPythonのスクリプトを実行すると、 'sys.path'には現在の作業ディレクトリへの絶対パスが含まれています。コンソールに入力すると、 'sys.path'には現在の作業ディレクトリの'。 'のみが含まれます。それは行動の違いを説明するかもしれない。 –
これを試しましたが、エラーが発生しました:AttributeError: 'module'オブジェクトに 'AddReferenceToFileAndPath'属性がありません – Avis
:
import clr
clr.AddReferenceToFile("yxz.dll")
それは相対パスを取るので、それはclr.AddReferenceToFile(ファイル名)を使用することをお勧めします。
import clr
clr.AddReferenceToFile("xxx.dll")
次に、あなたはいつものように、インポートによってクラスをインポートすることができます
import xxx
または
from xxx import *
私はあなたはそれが非常に便利です、この本をチェックアウトすることをお勧めします。 https://play.google.com/store/apps/details?id=com.gavin.gbook
AddReferenceToFileAndPathは相対ディレクトリパスfwiwでも動作します。 – EdwardGarson
この現象は、IronPythonコンソールからのみ発生します。私がスクリプトを実行すると、それは問題ありません。 IronPythonのスクリプトを実行すると、sys.pathには現在の作業ディレクトリへの絶対パスが格納されます。コンソールに入力すると、sys.pathには '。'だけが含まれます。現在の作業ディレクトリ用です。それは行動の違いを説明するかもしれない。ハック溶液のビットとして
、Iは
"""This hacky script fixes the sys.path when I run the ipy console."""
import sys
import os
sys.path.insert(0, os.getcwd())
del sys
del os
fixpath.pyファイルを作成したそれから私はこのファイルの絶対パスと環境変数IRONPYTHONSTARTUPを設定します。その後、IronPythonコンソールを起動するたびにこのスクリプトが実行され、sys.path
には現在の作業ディレクトリへの絶対参照が含まれ、その後のclr.AddReference
の呼び出しは正常に動作します。
- 1. IronPythonでC#でNLTKを使用する
- 2. C++でヘッダーなしのDLLを使用する方法
- 3. C++ .exeでDLLをコンパイルする方法
- 4. Visual Studio C++でDLLを使用する
- 5. C#でネイティブDLLを使用する
- 6. Qt C++でDLLを使用する
- 7. Winformアプリケーションでdllを使用するC#
- 8. C#でvC++ Dllを使用する
- 9. COM dllをアンマネージC++で使用する
- 10. IronPythonを使用してWCFサービスに接続する方法
- 11. IronPythonのを使用して、IronPythonの
- 12. IronPythonでlxmlを使用するには?
- 13. IronPythonをMonodroidで使用する - NotImplementedError
- 14. IronPythonでpygooglevoiceを使用する
- 15. IronPythonでILMergeを使用する
- 16. IronPythonの問題でC#dllの点在する名前のファイルをインポート
- 17. C#でアンマネージCOM DLLを参照せずに使用する方法
- 18. C++でのC#DLLの使用
- 19. 私のC++ DLLでC#DLLを呼び出す方法は何ですか?
- 20. C#を使って.dllをアンロードする方法は?
- 21. これはdllを使う良い方法ですか? (?C++)
- 22. msvr71.dll(Microsoft Visual C++ランタイムDLL)を配布する方法
- 23. DLLのみを使用してアプリケーションを実行する方法は? C#。
- 24. Visual Studio 2012を使用してC DLLを作成する方法
- 25. C#でCの配列とポインタを使用するDLL
- 26. C DLLでデルファイコールバック関数を使用
- 27. C#プロジェクトでCOM dllを使用
- 28. C#でF#をdllとして使用
- 29. .dllファイルをJavaコードで使用する方法は?
- 30. VS2008でVS2010ビルドされたDLLを使用する方法
行をclr.AddReference( "yxz")に変更するとどうなりますか?違いはありますか? –
DLLが見つからないという問題がある場合は、SysinternalsのProcess Monitorを使用して何が間違っているのかを特定します。 –
fuslogvw.exeは、管理されたDLLが見つからない理由を理解するのにも良い方法です。これはプラットフォームSDKに付属しています。 –