J'ai un problème à l'aide d'un dll fortran dans MATLAB. Je ne pouvais pas utiliser une DLL, qui est construite par fortran, dans matlab. J'utilise l'instruction "loadlibrary" dans matlab mais l'erreur est liée aux fichiers d'en-tête. Qu'est-ce qu'un fichier d'en-tête ?? s'il vous plaît donnez-moi plus d'informations pour charger un dll fortran dans matlab et appelez-le.en utilisant dll dans matlab
Répondre
Sans voir votre fichier d'en-tête et la ligne de commande que vous utilisez dans MATLAB, il est difficile de vous aider ici. Vous pourriez reference the documentation in MATLAB which request that you pass two arguments to loadlibrary, le second étant le fichier d'en-tête avec les signatures de fonction. Je suppose que vous ne fournissez pas ce deuxième argument.
Plutôt que d'essayer d'utiliser un fichier dll directement, je vous suggère de le reconstruire en utilisant la fonctionnalité MEX de Matlab. Oui, un fichier mex est un dll et vous pouvez créer des dlls en dehors de Matlab et les utiliser avec succès, c'est beaucoup plus facile, pour un débutant comme je suppose que vous l'êtes, d'utiliser MEX. Une façon de simplifier est que, si vous construisez un fichier mex, le système ne vous demandera pas un fichier d'en-tête qui est, comme vous le savez, un concept plutôt étranger à un programmeur Fortran. Une autre façon dont MEX vous facilitera la vie est que vous pouvez ensuite appeler la fonction exposée par la DLL directement depuis la ligne de commande de Matlab, sans loadlibrary.
Etudiez la documentation Matlab sur les fichiers MEX, en portant une attention particulière à l'intégration de Fortran de cette manière.
Vous devez fournir un fichier d'en-tête qui définit chacune des fonctions nommées dans la DLL Fortran que vous appelez. Par exemple, si votre DLL contient une fonction nommée sum
qui résume deux doubles variables de précision, comme:
function sum(a,b) result(sum)
real(kind=2), intent(in) :: a, b
real(kind=2) :: sum
sum = a + b
end function
Ensuite, votre tête devra contenir quelque chose comme:
double sum(double*a, double*b);
Mais ne pas oublier de Décorez ceci avec le nom mangling spécifique à votre compilateur Fortran. Par exemple, si sum
était dans un module nommé foo
, et compilé avec le gfortran, alors vous aurez besoin de quelque chose comme:
double __foo_MOD_sum(double*a, double*b);
Il y a beaucoup d'autres cas, mais c'est l'essentiel.
- 1. Erreurs DLL MATLAB "C"
- 2. En utilisant errorbar() avec semilogy() dans MATLAB?
- 3. Réponse en fréquence utilisant FFT dans MATLAB
- 4. deux polynômes en utilisant Matlab
- 5. Appelez dll - pcshll32.dll en utilisant delphi
- 6. C# avec matlab dll devrait fonctionner sur pc sans matlab
- 7. Désinscrire DLL en utilisant regsvr32
- 8. en utilisant libcurl sans dll
- 9. AVR ou PIC? En utilisant MATLAB
- 10. Comment résoudre ceci en utilisant MATLAB
- 11. Écrire des chaînes dans Excel en utilisant Matlab?
- 12. ellipsoïde utilisant matlab
- 13. GUI multiples dans Matlab utilisant le GUIDE
- 14. résultat bizarre utilisant l'opérateur `` == dans Matlab
- 15. ASTreeVoir l'aide! (en utilisant JavaScript avec .dll)
- 16. Comment convertir une page web en image en utilisant MATLAB?
- 17. Créer une DLL JNI en utilisant MINGW
- 18. Java I/O en utilisant inpout32.dll
- 19. erreur Matlab utilisant m puissance
- 20. Wrapper C# en utilisant dll non géré
- 21. en utilisant les fonctions en dll, en java
- 22. en utilisant une DLL dans une application .NET
- 23. AVR ou PIC utilisant MATLAB?
- 24. trunc le nombre entier de nombre réel en utilisant matlab
- 25. Estimation de la valeur de Pi en utilisant MATLAB
- 26. Comment charger une DLL en utilisant ctypes en Python?
- 27. Couleur Comparaison de deux images en utilisant matlab
- 28. En utilisant nntool [Matlab] de la ligne de commande
- 29. Comment convertir des fichiers m en dll?
- 30. debug dans matlab