私は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. Qt C++で使用するC#DLLをラップする方法は?
- 3. C++ DLLからC#コードを使用する方法
- 4. DLLでC#を使用してオブジェクトをロックする方法
- 5. C++でヘッダーなしのDLLを使用する方法
- 6. IronPython with .Net Core 1.0の使用方法
- 7. CodeBlocks:wxWidgetsライブラリDLLを使用してC++アプリケーションをビルドする方法
- 8. Visual C++ sqlite3.dllを使用しないsqlite3の使用方法
- 9. main関数からdll(C++)関数をC言語で使用する方法#
- 10. IronPythonは内部クラスをC#dllから取得します
- 11. C++ .exeでDLLをコンパイルする方法
- 12. Visual Studio C++でDLLを使用する
- 13. C#でDelphi DLLを使用する
- 14. COM dllをアンマネージC++で使用する
- 15. Qt C++でDLLを使用する
- 16. C#でvC++ Dllを使用する
- 17. C#でネイティブDLLを使用する
- 18. Winformアプリケーションでdllを使用するC#
- 19. Visual C++でダイアログボックスを持つdllを作成する方法(Windowsアプリケーション用のDLL)
- 20. IronPythonを使用してWCFサービスに接続する方法
- 21. IronPythonのを使用して、IronPythonの
- 22. IronPythonの問題でC#dllの点在する名前のファイルをインポート
- 23. DllのC#プロジェクトでCコードを使用
- 24. IronPythonでlxmlを使用するには?
- 25. IronPythonをMonodroidで使用する - NotImplementedError
- 26. IronPythonでfunctoolsを使用する
- 27. IronPythonでpygooglevoiceを使用する
- 28. IronPythonでILMergeを使用する
- 29. IronPythonでpyVisaを使用する
- 30. すぐにC++ DLLを使用する
行をclr.AddReference( "yxz")に変更するとどうなりますか?違いはありますか? –
DLLが見つからないという問題がある場合は、SysinternalsのProcess Monitorを使用して何が間違っているのかを特定します。 –
fuslogvw.exeは、管理されたDLLが見つからない理由を理解するのにも良い方法です。これはプラットフォームSDKに付属しています。 –