Ho creato una dll utilizzando C#. Come si usa la DLL in IronPython. Ho provato ad aggiungere la DLL usando clr.AddReference ("yxz.dll"). Ma fallisce. Ho provato a mettere la DLL nella directory di esecuzione dello script IronPython. Ancora non riesce affermando che "Nome xyz non può essere trovato" durante il tentativo di riferirsi alla DLL.Come utilizzare una dll C# in IronPython
risposta
Penso che non riesca a trovare il file perché non sa dove cercarlo, vedere here per una spiegazione dettagliata su come funzionano le funzioni clr.AddReference ...().
L'esempio Creating .NET Classes Dynamically from IronPython crea un assembly (che viene successivamente salvato su disco come "DynamicAsm.dll"). Contiene una classe chiamata "DynamicType
", con un unico metodo statico chiamato "test
". Questo metodo accetta quattro numeri interi e li somma insieme.
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
Si noti che l'esempio utilizza il nome della classe nella dichiarazione import
.
usa 'importa sys sys di stampa.path' per determinare dove clr.AddReference sta cercando dll – mydogisbox
Posso davvero farlo dall'esterno? O devo davvero importare clr e aggiungere il riferimento all'assembly nel mio script IronPython? Qui ho alcuni assembly che mi piacerebbe importare staticamente in modo che siano sempre disponibili nello script. –
import clr
clr.AddReferenceToFileAndPath(r"C:\Folder\Subfolder\file.dll")
è il modo più semplice proposto da Jeff nei commenti. Questo funziona anche:
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
Puoi anche usare 'clr.AddReferenceToFileAndPath', che fa esattamente questo. –
Ricevo questo comportamento solo dalla console IronPython. Quando eseguo uno script va bene. Quando eseguo uno script su IronPython, 'sys.path' contiene un percorso assoluto per la mia directory di lavoro corrente in modo che funzioni. Quando scrivo la console, 'sys.path' include solo un' '.'' per la directory di lavoro corrente. Questo potrebbe spiegare la differenza di comportamento. –
Ho provato questo, ma ricevendo un errore: AttributeError: l'oggetto 'module' non ha attributo 'AddReferenceToFileAndPath' – Avis
È possibile utilizzare questo:
import clr
clr.AddReferenceToFile("yxz.dll")
E 'meglio usare clr.AddReferenceToFile (nome del file), perché ci vuole un percorso relativo.
import clr
clr.AddReferenceToFile("xxx.dll")
Quindi è possibile importare le classi da importazione come al solito:
import xxx
o
from xxx import *
vi consiglio di controllare questo libro, è molto utile. https://play.google.com/store/apps/details?id=com.gavin.gbook
AddReferenceToFileAndPath funziona anche con percorsi di directory relativi, fwiw. – EdwardGarson
Ho ottenuto questo comportamento solo dalla console IronPython. Quando eseguo uno script va bene. Quando eseguo uno script su IronPython, sys.path contiene un percorso assoluto alla mia attuale directory di lavoro, quindi funziona. Quando scrivo la console, sys.path include solo un '.' per la directory di lavoro corrente. Questo potrebbe spiegare la differenza di comportamento.
come un po 'di una soluzione hacky, ho creato un file fixpath.py
"""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
Poi ho creato un ambiente IRONPYTHONSTARTUP variabile con il percorso assoluto per questo file. Quindi ogni volta che avvio la mia console IronPython, questo script viene eseguito e il mio sys.path
include un riferimento assoluto alla mia attuale directory di lavoro e le successive chiamate a clr.AddReference
funzionano correttamente.
- 1. Come caricare una DLL in C# in python?
- 2. Impossibile utilizzare DateTime in IronPython
- 3. È possibile utilizzare una dll in C# in un'applicazione golang
- 4. Utilizzare DLL in C senza lib
- 5. Come documentare una C# dll
- 6. È possibile chiamare una DLL C# da una DLL C?
- 7. Come usare una dll C++ in Unity3D?
- 8. Catching Ironpython Eccezione in C#
- 9. Come si implementa un'interfaccia in IronPython?
- 10. Come utilizzare IronPython con Visual Studio 2008
- 11. Come utilizzare una DLL in un progetto Haskell?
- 12. C#/IronPython Interop con libreria di classi C# condivisa
- 13. Codice di esempio di integrazione C++ \ IronPython?
- 14. come accedere a una classe da una DLL in python?
- 15. Come utilizzare New-oggetto di una classe presente in una DLL C# utilizzando PowerShell
- 16. Esegui una particolare funzione Python in C# con IronPython
- 17. Come chiamare DLL C++ in C#
- 18. Come utilizzare una libreria C++ in un'app C#?
- 19. Come invertire una DLL nel codice C++?
- 20. Utilizzo di NLTK in C# tramite IronPython
- 21. Debug C++ dll in C#
- 22. Compilazione di un codice di IronPython a EXE o DLL
- 23. Soluzione C# Visual Studio in una DLL
- 24. Compilare Brotli in una DLL .NET può fare riferimento
- 25. Come utilizzare le classi C++ esportate da una DLL in Delphi
- 26. NLTK in IronPython da WPF
- 27. Non è possibile utilizzare riferimento DLL in C#
- 28. Scrittura di una DLL in C/C++ per l'interoperabilità .Net
- 29. Come verificare se una DLL COM è registrata in C#
- 30. Come registrare una DLL COM scritta in C# con Regsvr32?
Cosa succede se si modifica la riga in clr.AddReference ("yxz"), questo fa alcuna differenza? –
Se il problema è che la DLL non può essere trovata, utilizzare Process Monitor di Sysinternals per individuare cosa non funziona. –
fuslogvw.exe è anche un buon modo per capire perché una DLL gestita non viene trovata - viene fornita con la piattaforma SDK. –