Appel d'une DLL non managée depuis une autre DLL

Signaler
-
Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
-
Salut a tous.
Je fais appel a vous faute de solution a ce dernier problème que je ne comprends pas.
J'ai une dll non managée que je génère (libsndfile) .
Dans mon programme vb.net si je l'appelle avec une déclaration:
 <DllImport("libsndfile.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Function wav_frequency(ByVal filename As String) As Integer

    End Function


Cela fonctionne sans problème.

Si je met cette déclaration dans une DLL vb.net également (un autre projet qui dépends de celui ci) ca fonctionne en debug, mais plus quand c'est déployé.
Pourtant les 2 DLL sont bien dans le répertoire après l’installation. tout se passe comme si ma DLL vb, ne cherchait pas dans le répertoire local la librairie libsnd.

J'aime bien mutualisé, et comme cette fonction va être appelée de plusieurs application, je voulais la mutualiser. Au pire je migrerai dans le code principal, mais j'aimerai comprendre pourquoi cela ne fonctionne pas ou ce que je fais de mal.
Merci pour votre aide.

3 réponses

Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
Bonjour

essaye de mettre le chemin complet de ta dll
DIm chemin as string = Path.Combine(Application.StartUpPath,"libsndfile.dll") 

Sans garantie.

PS: tu as essayé d'utiliser les balises de code, voici un petit tuto pour s'en servir correctement https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
7
Date d'inscription
jeudi 31 juillet 2014
Statut
Membre
Dernière intervention
6 avril 2020

malheureusement DllImport n'accepte que des chaines constantes!
Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
Ben sinon tu peux peut-être enregistrer ta dll avec regsvr32
https://www.qwant.com/?q=regsvr32&client=brz-brave