Je suis en train de jouer avec dynamiclibrary code >
.
Le code de ma bibliothèque dynamique (compilé avec Dylib de type DYLIB.RS de type Rusc --Crate code>): P>
~> ./caller
Unsafe bloc !
call func !
Illegal instruction
3 Réponses :
Je pense que le problème découle du fait que vous coulez entre des types incompatibles. Plus précisément, la déréférence la sortie: p> * f code> va pointer sur le mauvais endroit. J'ai regardé dans le code de rouille pour voir comment la bibliothèque est censée être utilisée et trouvé un exemple dans
SRC / LIBRUSTC / PlugIN / CHARGE.RS CODE>. J'ai adapté ce code à votre exemple:
Oh, je vois, merci. La documentation n'est pas claire à ce sujet du tout.
C'est très charitable; Il n'y a pas vraiment de documents pour le moment ... J'ai même vu #! [Autoriser (manquant_docs)] code> pendant la source de source ^ _ ^.
Le problème ici est comment le symbole code> fonctionne fonctionne fonctionne. Il a la signature:
unsafe fn symbol<T>(&self, symbol: &str) -> Result<*mut T, String>
Depuis cette question / réponse, le std :: dynamic_lib code> API semble avoir disparu. Dès cette écriture, il ressemble à LIBLOADING est le moyen le plus populaire de chargement dynamique des bibliothèques sur Crates.IO . p>