J'ai utilisé D depuis environ un mois maintenant après avoir utilisé d'autres langages tels que C++ et Java. J'ai voulu déplacer ma plate-forme de jeu simple de Java vers D, et j'aimerais utiliser la bibliothèque Derelict3 pour le faire. J'ai compilé le référentiel github situé ici https://github.com/aldacron/Derelict3Utilisation de Derelict3 sous DMD2 (D)
En cours d'exécution Linux, si cela aide.
J'ai placé mes fichiers dans .a /usr/lib/.. et je l'ai placé mes fichiers .d (Le dossier d'importation à partir du répertoire racine Derelict) dans /usr/include/i386- linux-gnu/DMD/druntime/import
Mon code est le suivant:
import std.stdio;
import derelict.opengl3.gl3;
import derelict.glfw3.glfw3;
pragma(lib, "/usr/lib/libDerelictUtil.a");
pragma(lib, "/usr/lib/libDerelictGL3.a");
pragma(lib, "/usr/lib/libDerelictGLFW3.a");
void main() {
DerelictGL3.load();
writeln("This is a line");
}
Ceci est basé sur d'autres questions qui ont été répondu sur stackoverflow et certains sujets des forums dlang.org, mais le le terminal me crache dessus quand je compile:
[email protected]:~$ dmd main.d
/usr/include/D/Derelict/libDerelictGL3.a(gl3.o): In function `_D8derelict7opengl33gl318_sharedStaticDtor2FZv':
../import/derelict/opengl3/gl3.d:(.text._D8derelict7opengl33gl318_sharedStaticDtor2FZv+0x4): undefined reference to `_D8derelict4util6loader15SharedLibLoader19isAutoUnloadEnabledOFNdZb'
/usr/include/D/Derelict/libDerelictGL3.a(gl3_d1_649.o):(.data+0x38): undefined reference to `_D8derelict4util6loader15SharedLibLoader7__ClassZ'
/usr/include/D/Derelict/libDerelictGL3.a(gl3_d1_649.o):(.rodata+0x4418): undefined reference to `_D8derelict4util6loader15SharedLibLoader4loadMFZv'
(MORE of the above)
collect2: ld returned 1 exit status
--- errorlevel 1
Ne connaissez pas votre problème réel, mais voici un point important. Essayez de ne pas utiliser les chemins absolus vers les bibliothèques. Sur un autre ordinateur que le vôtre, ce code provoquera une erreur de compilation s'il n'y a pas de bibliothèques sur le chemin spécifié. Utilisez les indicateurs du compilateur ou le système de construction pour gérer les dépendances de la bibliothèque. –
Je pense que votre 'libDerelictUtil.a' est la version Derelict2. – dav1d
Ce n'est pas moi qui l'ai téléchargé directement du dépôt Derelict3. – KevinRK