1. #1
    Nouveau membre du Club
    Inscrit en
    octobre 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 44
    Points : 36
    Points
    36

    Par défaut Erreur de linkage / kernel32

    Bonjour,

    Je voudrais réaliser un programme en assembleur faisant appel à des fonctions de kernel32, en l’occurrence GetCurrentDirectory().
    J'utilise nasm, je me suis renseigné sur le nom exacte de la fonction en allant vérifier la table d'export de kernel32.dll (elle exporte deux versions : GetCurrentDirectory(W/A)).
    Mais pour le moment impossible pour le linker de trouver cette fonction... Voici le script de base que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @echo off
    set fileName=%1
    set asmFileName=%fileName%.asm
    set objFileName=%fileName%.obj
    set exeFileName=a.exe
    "C:\Program Files (x86)\SASM\NASM\nasm.exe" -f win32 %asmFileName%
    "C:\MinGW\bin\ld.exe" %objFileName% -lmsvcrt -lkernel32 -entry=_main -submsystem=console -o %exeFileName% -L "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\arm"
    @echo on
    j'obtiens : test.obj:test.asm.text+0xd): undefined reference to `GetCurrentDirectoryW'

    J'ai déjà essayé pas mal de chose...
    J'ai également tenter de passer par le linker de visual studio, j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    test.obj : error LNK2001: unresolved external symbol _printf
    test.obj : error LNK2001: unresolved external symbol GetCurrentDirectoryW
    test.obj : error LNK2001: unresolved external symbol _malloc
    test.exe : fatal error LNK1120: 3 unresolved externals
    Voici le code, il sans doute faux, mais je n'ai pas trop eu le temps de le test pour le coup (sauf avec du code simple permettant d'afficher du texte, j'arrive donc à aller chercher les fonctions de bases telles que printf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    global _main
     
    extern _printf
    extern _GetCurrentDirectoryW
    extern _malloc
     
    section .data
    	printfFormat db "%d bytes\n", 0
    	dirSize dd 0
     
    section .text
    	_main:
    		call _getCurrentDirSize
     
    		ret
     
    	_getCurrentDirSize:
    		xor eax, eax
    		push 0
    		push 0
    		call _GetCurrentDirectoryW
     
    		push eax
    		push printfFormat
    		call _printf
     
    		ret
    Merci d'avance pour votre aide !

    Bonne journée

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    7 352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 7 352
    Points : 15 762
    Points
    15 762

    Par défaut

    Ca ne peux pas marcher, tu essayes de linker une fonction win32 avec une bibliothèque ARM.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Erreur au linkage de la zlib en static
    Par Flo. dans le forum C++
    Réponses: 10
    Dernier message: 05/05/2006, 10h23
  2. Erreur au linkage
    Par Celelibi dans le forum Linux
    Réponses: 3
    Dernier message: 05/05/2006, 00h59
  3. Erreur de linkage d'une Dll
    Par Hokagge dans le forum MFC
    Réponses: 1
    Dernier message: 30/03/2006, 15h48
  4. Erreur de Linkage GMP
    Par youbyoub dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 05/03/2006, 14h31
  5. Membres statiques d'une classe et erreur de linkage
    Par Neilos dans le forum C++Builder
    Réponses: 10
    Dernier message: 10/02/2006, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo