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 c3861 createfilew identificateur inconnue


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut erreur c3861 createfilew identificateur inconnue
    Bonjour a tous..
    je suis en train de créer un programme devant envoyer et recevoir des données sur un port com. Mais à la compilation j'ai une erreur. Un peu d'aide serait appréciable :
    voici mes librairies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "stdafx.h"
    #include "windows.h"
    #include "stdio.h"
    #include "stdlib.h"
    #include "conio.h"
    #include "gl\glut.h"
    #include "iostream"
    #include "resource.h"
    le bout de code à problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     /* construction du nom du port, tentative d'ouverture */
        sprintf_s(szCOM, "COM%d", nId);
        g_hCOM = CreateFilew(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
    et la super erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>port.cpp(128): error C3861: 'CreateFilew'*: identificateur introuvable
    s'il y a besoin de quelque chose d'autre juste à demander

  2. #2
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Bonjour,
    je crois qu'il faut ecrire CreateFile au lieu de CreateFilew
    cordialement

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut :merci:
    décidément il y a des jours où il vaut mieux rester couché
    merci pour ton aide c'était en effet la majuscule qui manquait.
    Du coup maintenant j'ai la vrai erreur :

    1>port.cpp(128): error C2664: 'CreateFileW'*: impossible de convertir le paramètre 1 de 'char [16]' en 'LPCWSTR'

    que je ne comprends pas plus. Je ne suis pourtant pas en unicode... Une idée

  4. #4
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Essaye ce bout de code, j'espère qu'il va t'aider
    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
     
    #include "stdafx.h"
     #include "windows.h"
     #include "stdio.h"
     #include "stdlib.h"
     #include "conio.h"
     #include "gl\glut.h"
     #include "iostream"
     #include "resource.h"
     
     le bout de code à problème :
     /* construction du nom du port, tentative d'ouverture */
     sprintf_s(szCOM, "COM%d", nId);
    int iLen= lstrlenA(szCOM);
    BSTR lpcwstrCom = SysAllocStringLen(NULL, iLen);
    ::MultiByteToWideChar(CP_ACP, 0, szCOM, iLen, lpcwstrCom, iLen);
     g_hCOM = CreateFilew(lpcwstrCom, GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
     
    //... Faut liberer la memoire une fois qu'ona finit avec 
    ::SysFreeString(lpcwstrCom);
    cordialement

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut yeah !!
    Sa fonctionne, il a juste fallu que je rajoute glut32.dll dans mon système
    est c'est parfait, il y a une autre alternative à ce que tu as écrit qui donne le même résultat :

    g_hCOM = CreateFileW(L"szCOM", GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);

    au cas où elle t'intéresse
    merci pour ton aide , pis surement à bientôt je sens que les ennuis ne font que commencer...

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Les chaines de caractères c'est std::[w]string et pas des tableaux de chaînes de caractères.
    sprintf_s, c'est pas du C++ => utilise les flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       std::wostringstream woss;
       woss << L"COM" << nId;
       std::wstring const szPort = woss.str();
       g_hCOM = CreateFileW(szPort .c_str(), GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "nom de fonction inconnu"
    Par Duddy dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/01/2008, 18h01
  2. erreur C2664: 'CreateFileW'
    Par tabbas dans le forum Windows
    Réponses: 2
    Dernier message: 28/04/2007, 12h48
  3. Identificateur inconnu et mauvais nombre de paramètres
    Par Maxence45 dans le forum Pascal
    Réponses: 7
    Dernier message: 05/03/2007, 20h21
  4. Réponses: 1
    Dernier message: 22/02/2007, 11h30
  5. [WD5.5] Identificateur inconnu
    Par niafreu dans le forum WinDev
    Réponses: 10
    Dernier message: 03/02/2007, 00h02

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