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

C Discussion :

Erreur LNK1104 sur création de librairie


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur LNK1104 sur création de librairie
    Bonjour,

    Je suis là pour un peu d'aide, un problème sans doute simple à résoudre pour un passionné. J'ai besoin d'utiliser des fonctions en C que rédigent dans le logiciel de CFD StarCCM+ qui prennent en entrées des résultats et qui en sortent d'autres.

    Mais pour ce faire il est nécessaire de passer par des librairies dont je ne sais absolument pas me servir. Je vous mets le "tuto" fournit par le logiciel sur la question à la fin du post.

    J'ai installé Visual Studio 2008 et j'ai une fonction pour tester en .c qui donne la T° en Fahrenheit si on lui file celle en Kelvin. La fonction a été testée et fonctionne, maintenant le but est de la faire fonctionner avec le logiciel de CFD.

    Première étape je me suis mis avec le terminal Visual Studio dans le dossier de la fonction et je l'ai compilé avec la commande donnée à l'étape 2 du tuto.

    La 3ème étape pose problème, toujours dans le dossier de la fonction, je mets cette fois la commande qui dise en la modifiant pour adapter le chemin ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    link -dll /out:libuser.dll *.obj “C:\Program Files\CD-adapco\STAR-CCM+10.02.012\star\lib\win64\intel12.1\lib\UserFunctions.lib”
    Et là, il répond: << LINK : fatal error LNK1104: impossible d'ouvrir le fichier '"C:\Program.obj' >>

    J'ai vérifié l’existence de la librairie UserFunctions.lib et le problème ne vient pas de là.

    Sur le Net, la solution la plus commune a cette erreur est de corriger un des chemins d’accès du projet dans visual studio, le hic c'est que je n'ai pas de projet, j'ai seulement besoin d'une fonction.

    Si quelqu'un a une idée, c'est le bienvenu, sinon je peux vous fournir autant de renseignement que nécessaire!

    Amicalement,

    Florian

    Le Tuto:

    "Creating a User Library on Windows
    To create a user library on Windows, follow the steps below:
    1.Open a Visual Studio x64 Cross Tools Command Prompt to compile a 64-bit library (or the Visual Studio Command Prompt for 32 bit).

    2.Compile the source code into object files using the command:
    cl /MD /D_WINDOWS -c *.c
    For *.cpp files, substitute *.c with *.cpp.
    For double precision code, include the compiler option /DDOUBLE_PRECISION.

    3.Link the objects into a Dynamic Link Library (DLL) using the UserFunctions.lib found in the compiler subdirectory of your STAR-CCM+installation directory:
    link -dll /out:libuser.dll *.obj “C:\Program Files\CD-adapco\STAR-CCM+ 7.02.008\win64\intel11.1\UserFunctions.lib”
    For a 32-bit compilation substitute win64 with win32.

    4.Check that you have a function that is called uclib exported from the DLL. STAR-CCM+ looks for this function in the DLL:
    dumpbin/exports libuser.dll
    An example of a dump output is given below:
    Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
    Copyright (C) Microsoft Corporation. All rights reserved.
    Dump of file libuser.dll
    File Type: DLL
    Section contains the following exports for libuser.dll
    00000000 characteristics
    4F38F59E time date stamp Mon Feb 13 11:35:58 2012
    0.00 version
    1 ordinal base
    1 number of functions
    1 number of names
    ordinal hint RVA name
    1 0 00001240 uclib
    Summary
    1000 .data
    1000 .pdata
    1000 .rdata
    1000 .reloc
    1000 .text

    5.Embed the manifest so that it moves with the DLL file when the library file is moved to another directory:
    mt -manifest libuser.dll.manifest -outputresource:libuser.dll;2
    The manifest file can be deleted after embedding."

  2. #2
    Membre actif

    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 87
    Points : 217
    Points
    217
    Par défaut
    Bonjour,

    La 3ème étape pose problème, toujours dans le dossier de la fonction, je mets cette fois la commande qui dise en la modifiant pour adapter le chemin ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    link -dll /out:libuser.dll *.obj “C:\Program Files\CD-adapco\STAR-CCM+10.02.012\star\lib\win64\intel12.1\lib\UserFunctions.lib”
    Et là, il répond: << LINK : fatal error LNK1104: impossible d'ouvrir le fichier '"C:\Program.obj' >>

    Tout ce qui concerne le linkage m'est encore mystérieux mais je te propose de bien vérifier les chemins que tu donne en entrée.
    l'objet que tu as généré il est mis où, car lui apparemment il le cherche dans C:\? est ce que tu as essayé avec un chemin absolu de l'objet?

    Bon courage!
    Meryem

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    link -dll /out:libuser.dll *.obj “C:\Program Files\CD-adapco\STAR-CCM+10.02.012\star\lib\win64\intel12.1\lib\UserFunctions.lib”
    << LINK : fatal error LNK1104: impossible d'ouvrir le fichier '"C:\Program.obj' >>
    dans le code que tu as collé tu sembles utiliser les quotes et , je sais pas si c'est juste un effet de bord en postant ton message, dans le doute assure toi de bien délimiter le nom de ton fichier avec des double-quotes standard ", c'est vraissemblablement de là que vient ton souci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    link -dll /out:libuser.dll *.obj "C:\Program[/color] Files\CD-adapco\STAR-CCM+10.02.012\star\lib\win64\intel12.1\lib\UserFunctions.lib"

Discussions similaires

  1. [AC-2002] Erreur 3111 sur création ou suppression de table
    Par waici dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/08/2009, 14h41
  2. Erreur 429 sur création
    Par olimpio dans le forum Installation, Déploiement et Sécurité
    Réponses: 1
    Dernier message: 13/09/2008, 03h36
  3. [VBA-E]erreur sur création d'une barre de menu
    Par roseau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/03/2007, 12h17
  4. Erreur sur Création Dim Date Serveur sur Analysis Services
    Par domis dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/02/2007, 23h49
  5. Erreur sur Création de Pdf grâce à PdfCreator
    Par clauded07 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/01/2007, 16h43

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