IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Erreur de linkage / kernel32


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre du Club
    Developpeur C
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations professionnelles :
    Activité : Developpeur C

    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Points : 45
    Points
    45
    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
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 437
    Points : 43 078
    Points
    43 078
    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 le P2V, mon article sur le cloud
    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, 09h23
  2. Erreur au linkage
    Par Celelibi dans le forum Linux
    Réponses: 3
    Dernier message: 04/05/2006, 23h59
  3. Erreur de linkage d'une Dll
    Par Hokagge dans le forum MFC
    Réponses: 1
    Dernier message: 30/03/2006, 14h48
  4. Erreur de Linkage GMP
    Par youbyoub dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 05/03/2006, 13h31
  5. Membres statiques d'une classe et erreur de linkage
    Par Neilos dans le forum C++Builder
    Réponses: 10
    Dernier message: 09/02/2006, 23h06

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