Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreurs de Compilation

Sujet résolu
    18 juin 2008 à 13:59:29

    Salut!

    je suis Nouvelle dans la programmation avec Qt + C++. En ce momment je travaille sur un Projet qui consite a creer une fentre permetteant d'envoyer des Messages à une Clée automatique à travers l'interface USB-SPI. Mon problème se situe au niveau des DLLs et l'utilisation de FTD2xx. J'ai essayé d'integrer les differentes DLLs. Lorsque je Compile le programme j'obtiens les erreurs suivantes

    [gras]Erreurs:[/gras]
    In function `Z8openUSB1v':
    undefined reference to `_imp__FT_ListDevices@12:

    SVP est ce que quelqu'un pourrait m'aider. Comment faire pour rajouter corectement les Librairies les librairies?
    PS L' IDE utisé est MinGW + Qt

    voici la fonction main.CPP

    [Code]
    #include <QtGui>
    #include "mainwindow.h"
    #include "ui_USBDevice.h"
    #include "USB.h"
    #include "ui_mainwindow.h"
    #include "SPImode.h"
    #include "ui_SPImode.h"
    #include "SPIinitialise.h"
    #include "ui_SPIGeneratorInitialise.h"
    #include "ui_outputcontroll.h"
    #include "Outputcontroll.h"
    #include "ui_Statusinfo.h"
    #include "Statusinfo.h"
    #include "ui_SPIEinstellungen.h"
    #include "Einstellungen.h"
    #include <windows.h>
    #include <WinUser.h>
    #include "ftd2xx.h"
    #include <FTD2XX.H>
    #include <string.h>
    #include <string>
    #include <time.h>
    //#include <dstring.h>
    #include <stdio.h>
    #include <stdlib.h>
    //USELIB("ftd2xx.lib");
    //USELIB("NoffzUSBInterfaceDLL.lib");
    using namespace std;

    //Permet de convertir la chaine de carac "iftd2xx.dll" en WCHAR*
    //afin de pouvoir la charger avec LoadLibrary
    MainWindow *mainwindow;
    FT_STATUS ftStatus; //declaration of FTDI-handles
    FT_HANDLE ftHandle;
    FT_DEVICE ftDevice;
    string USBDevice;


    unsigned char *lpBuffer;
    unsigned char InstructionStream[255]; //Instruction Stream for
    //DDDK-Module including Byte Count
    //n and CheckSum

    unsigned char SENDBuffer[255]; //Buffer for complete transmission Stream

    ULONG NumOfBytes=0;
    ULONG SPIBytesWritten=0;
    ULONG SPIBytesReceived=0;
    ULONG I2CBytesWritten=0;
    ULONG I2CBytesReceived=0;
    DWORD RxBytes=0, TxBytes=0, EventDWord=0;
    bool CheckFlag=0, USB_Device_Attached=0;
    unsigned int timeout=0;
    unsigned char CycleTest_index = 0;
    unsigned char DummyInstruction[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

    unsigned char Display_CTRL_Set[6][8] = {{0xD0,0xFE,0x04,0x0,0x0,0x0,0x0,0x2E},
    {0xD0,0xFE,0x08,0x0,0x0,0x0,0x0,0x2A},
    {0xD0,0xFE,0x10,0x0,0x0,0x0,0x0,0x22},
    {0xD0,0xFE,0x20,0x0,0x0,0x0,0x0,0x12},
    {0xD0,0xFE,0x40,0x0,0x0,0x0,0x0,0xF2},
    {0xD0,0xFE,0x80,0x0,0x0,0x0,0x0,0xB2}};

    int Size = MultiByteToWideChar (CP_ACP, 0, "ftd2xx.dll", -1, NULL, 0);
    LPWSTR wUnicode = new WCHAR[Size];
    int Sizes = MultiByteToWideChar (CP_ACP, 0, "NoffzUSBInterfaceDLL.dll", -1, NULL, 0);
    LPWSTR wUnicodes = new WCHAR[Sizes];

    HINSTANCE ftdi_dll= LoadLibrary(wUnicode);

    HINSTANCE noffz_dll = LoadLibrary(wUnicodes);

    int Size1 = MultiByteToWideChar (CP_ACP, 0, "mainwindow", -1, NULL, 0);
    LPWSTR wUnicode1 = new WCHAR[Size1];

    HWND maindows = FindWindow(wUnicode1, 0);


    extern "C" __declspec(dllimport) ULONG GenerateInstructionStream
    (unsigned char PacketID,
    unsigned char ByteCount,
    unsigned char DataStream[255],
    unsigned char SendBuffer[255]);


    MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
    {
    setupUi(this);
    setupActions();
    }

    // Aktionen werden aktiviert
    void MainWindow::setupActions()
    {
    connect(actionOpen, SIGNAL(triggered (bool)), this, SLOT(showUSBwindow()));
    connect(actionAbout, SIGNAL(triggered (bool)), this, SLOT(openinfo()));
    connect(actionMode, SIGNAL(triggered (bool)), this, SLOT(showSPImode()));
    connect(actionSPIinitialisieren, SIGNAL(triggered (bool)), this, SLOT(showSPIinitwindow()));
    connect(actionOcontroll, SIGNAL(triggered (bool)), this, SLOT(showOutputcontroll()));
    connect(actionStatusopen, SIGNAL(triggered (bool)), this, SLOT(showStatusinfo()));
    connect(actionEinstellungen, SIGNAL(triggered (bool)), this, SLOT(showEinstellunegen()));

    }
    // info über der/ die Entwickler/rin
    void MainWindow::openinfo()
    {
    QMessageBox::about(this,"Info"," GUI zu einstellen der SPI-USB-Schnittstelle \n Diplomarbeit: Ngombe (TU Hamburg-Harburg & Marquardt GmbH) \n(c)2008 ");
    }

    // USB Window
    void MainWindow::showUSBwindow()
    {
    Ui::USBDevice ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->exec();
    }

    // SPI- Mode Window
    void MainWindow::showSPImode()
    {
    Ui::Mode ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->exec();
    }
    // SPI Window zum initialisieren der parametern
    void MainWindow::showSPIinitwindow()
    {
    Ui::SPIinitialise ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->exec();
    }
    // Zeigt Output Control Window
    void MainWindow::showOutputcontroll()
    {
    Ui::Outputcontroll ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->exec();
    }

    // Status Info Window
    void MainWindow::showStatusinfo()
    {
    Ui::Statusinfo ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->exec();
    }
    // zeigt die SPIEintelungen Window auf dem Bildschirm
    void MainWindow::showEinstellunegen()
    {
    Ui::SPIEinstellungen ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->exec();
    }

    /*****************************************************************************/
    /* C-Funktionen */
    /*****************************************************************************/
    // Convert decimal value in Range 0-255 into hexadecimal value
    char *DecToHex(unsigned char DecValue)
    {
    char *HexValue = (char *)malloc(3);
    char HexTable[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    HexValue[0]=HexTable[(DecValue&0xf0)>>4];
    HexValue[1]=HexTable[DecValue&0x0f];
    HexValue[2]='\0';
    return HexValue;
    } //DecToHe

    // Convert hex value into decimal value
    unsigned char HexToDec(string HexValue_String)
    {
    unsigned char DecValue=0;
    char *HexValue = (char *) malloc(5);
    char HexTable[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    strcpy(HexValue, HexValue_String.c_str());
    for(int i=0; i<=15; i++)
    {
    if(HexValue[0]==HexTable[i]) DecValue+=(16 *(char) i);
    if(HexValue[1]==HexTable[i]) DecValue+= (char)i;
    } //for
    return DecValue;
    }
    //HexToDec

    // Convert decimal value in Firmware-Version Info
    char *ConverttoVersion(unsigned char DecValue)
    {
    char *HexValue = (char *)malloc(5);
    char HexTable[16] {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    HexValue[0]='V';
    HexValue[1]=HexTable[(DecValue&0xf0)>>4];
    HexValue[2]='.';
    HexValue[3]=HexTable[DecValue&0x0f];
    HexValue[4]='\0';
    return HexValue;
    } //ConverttoVersion


    /*************************************************************************/
    /* C- Fonctions for Slots */
    /************************************************************************/

    long openUSB1 ()
    {
    char *BufPtrs[16]; //pointer to array of 16 pointers
    char Buffer[16][64]; //buffer for description devices
    for(int buffer_index=0; buffer_index<15; buffer_index++)
    BufPtrs[buffer_index] = Buffer[buffer_index]; //initialize array of pointers
    BufPtrs[15] = NULL; //last entry should be NULL

    DWORD numDevs;
    //ftStatus = FT_ListDevices(BufPtrs, &numDevs, FT_LIST_ALL|FT_OPEN_BY_DESCRIPTION);
    ftStatus = FT_ListDevices(BufPtrs, &numDevs, FT_LIST_ALL|FT_OPEN_BY_SERIAL_NUMBER);

    return ftStatus;

    }
    [/code]
    • Partager sur Facebook
    • Partager sur Twitter
      18 juin 2008 à 14:01:10

      Utilises les balises de code parce que là c'est illisible. Et donnes un code plus court qui reproduit l'erreur.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        20 juin 2008 à 15:40:50

        Désolée pour le formatage. je dois encore lire le manuel du Zéro. Sinon le pb a été résolu.
        Merci
        • Partager sur Facebook
        • Partager sur Twitter

        Erreurs de Compilation

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown