< Back to IRCAM Forum

Error loading user library on windows

Hello,

I tried to add a user library in OpenMusic and I get the following error. I compiled it in a .dll file and openMusic tells me it is not a valid Win32 application. I can’t find how to solve this. Can you help me?

Thank you

erreur

Hi.

.dll is absolutely not the correct format for a compiled lisp source. You just have to provide the .lisp source file and OM will do the rest. For more info on how to build your own library here:

Best
K

Bonjour,

Je n’ai pas bien expliqué mon problème. En fait le problème vient du fait que ma librairie utilise une foreign interface avec CFFI vers C++, et c’est le dll de celle-ci qui ne passe pas. La librairie fonctionne sur mac et est structurée correctement, le problème se situe juste avec windows. Donc j’ai recompilé la partie C++ sur windows mais ça ne marche pas, est-ce que vous savez m’aider? Peut-être que je dois ajouter une option à la compilation du dll mais je ne trouve pas laquelle.

Merci,

Damien

Cher Damien,

Effectivement, l’explication du debut n’etait pas claire.
C un peu difficile pour moi de vs dire le probleme ss avoir la lib (qui marche et qui ne marche pas). Juste faire attention pour la version windows ca devrait etre en 32 bit.
k

Bonjour,

En fait dans le cadre de mon mémoire qui est supervisé par Peter Van Roy, je développe un outil d’aide à la composition musicale, et j’utilise pour cela la programmation par contraintes avec l’outil Gecode.

Un étudiant avant moi avait développé une interface entre Gecode et Lisp pour faciliter cela et l’avait compilée sur mac. Comme je n’ai pas de mac, j’ai essayé de recompiler son interface sur Windows mais je ne sais pas l’importer dans OpenMusic malgré le fait que je l’ai compilée en 32bit.

Est-ce qu’il serait possible de faire une réunion avec vous afin que vous m’aidiez à résoudre ce problème?

Merci d’avance,

Damien

Cher Damien,

En premier lieu, pourriez-vous m’envoyer la librairie en question, afin de voir ou le probleme reside. a savoir la librairie qui marche (hypothetiquement) sur mac et celle que vous etes en train d’elaborer?

Bien a vous
K
K

Vous pouvez trouver la librairie sur github à l’adresse suivante : GitHub - blapiere/GiL , elle compile bien sur mac et l’importation dans OpenMusic ne pose pas de problème.

Pour windows, je l’ai compilée avec la commande suivante :

cl.exe /DNDEBUG /EHsc /MD /wd4355 /D “WIN32” /D_USRDLL /D_WINDLL -I “C:\Program Files\Gecode\include” gecode_wrapper.cpp space_wrapper.cpp /link /LIBPATH:“C:\Program Files\Gecode\lib” /DLL /OUT:…/sources/gil.dll

La compilation se passe sans problème, mais quand je veux l’importer dans OpenMusic l’erreur que je vous ai montrée plus haut apparait.

Merci d’avance de votre aide,

Damien

Cher Damien,

J’ai teste sous mac et sous linux:

Sous mac ca marche a condition evidement d’installer gecode avec la librarie compilee telle qu’elle est dans la distrib.

Sous linux: je n’ai meme pas reussi a la compiler et obtenu presque le meme message d’erreur qur tu mentionne.

Je presume que c’est vraiment lie a Gecode. il faut probablement que le code corresponde a la meme version (cf. 6.8 Can't load Gecode - #4 by labyk)

une disscussion qui date…

Peux-STP envoyer ta version avec le dll compile qur jr puisse tester de mon cte sur windows. Je ne garantie rien car j’utilise windows sur vm ce qui est assez penible.

k

Je ne peux apparemment pas uploader de fichier ici en tant que nouveau membre, j’ai donc créé un nouveau git ou vous pouvez le télécharger : https://github.com/sprockeelsd/GiL_Copy.git

J’ai bien installé gecode, et je vais regarder pour la version de gecode si c’est la source du problème.

Merci,

Damien

La question ce pose:
Avez-vous trouver un gecode en 32 bit pour win ?

Il n’y a pas de version de gecode en 32 bit à ma connaissance, vous pensez que c’est ça le problème?

Je pensais qu’en compilant avec l’option 32 bit ça ne poserait pas de problèmes

Je ne suis pas specialiste de GEcode du tout, mais j’ai bien l’impression qur cela soit la source de l’erreur.
Avez-vous essaye de compiler la dll en 64 bit pour voir?

Cher Damien,
Un ami et collegue me dit qu’il te faudra compiler gecode en 32bit puis faire ton dll en 32 pour que cela marche avec om.
Car Helas apparement d’apres ce qu’il m’a dit si l’application est en 32 ce qui est le cas de om, les libs partagees devraient l’etre ce qui normal et de plus il faut que celle-ci communique avec gecode qui devrait aussi etre en 32.

Voila donc une solution.
Bien a vous
k

Bonjour,

Merci je vais essayer ça.

Bonne journée,

Damien