Accueil > Forum > > > > erreur de linkage
erreur de linkage
mercredi 3 septembre 2008 à 10:46:39 |
erreur de linkage

olfa7183
|
bonjour, j'ai un projet prgramme avec visual studio C++ 6.0 lors de compilation tout est bien mais à l'exécution j'obtient des erreurs de linkage. je veux savoir c'est dû à quoi ses erreures et de m'aider à résoudre ces problèmes. voila les erreurs que j'obtient: -------------------Configuration: Monnayeur - Win32 Debug-------------------- Linking... Monnayeur.obj : error LNK2005: "public: __thiscall CAboutDlg::CAboutDlg(void)" (??0CAboutDlg@@QAE@XZ) already defined in ccDLL_TestDlg.obj Monnayeur.obj : error LNK2005: "protected: virtual void __thiscall CAboutDlg::DoDataExchange(class CDataExchange *)" (?DoDataExchange@CAboutDlg@@MAEXPAVCDataExchange@@@Z) already defined in ccDLL_TestDlg.obj Monnayeur.obj : error LNK2005: "protected: virtual struct AFX_MSGMAP const * __thiscall CAboutDlg::GetMessageMap(void)const " (?GetMessageMap@CAboutDlg@@MBEPBUAFX_MSGMAP@@XZ) already defined in ccDLL_TestDlg.obj Monnayeur.obj : error LNK2005: "protected: static struct AFX_MSGMAP const CAboutDlg::messageMap" (?messageMap@CAboutDlg@@1UAFX_MSGMAP@@B) already defined in ccDLL_TestDlg.obj Monnayeur.obj : error LNK2005: "private: static struct AFX_MSGMAP_ENTRY const * const CAboutDlg::_messageEntries" (?_messageEntries@CAboutDlg@@0QBUAFX_MSGMAP_ENTRY@@B) already defined in ccDLL_TestDlg.obj ccDLL_TestDlg.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall ccDLL_TestDlg::GetRuntimeClass(void)const " (?GetRuntimeClass@ccDLL_TestDlg@@UBEPAUCRuntimeClass@@XZ) Debug/Monnayeur.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe.
Monnayeur.exe - 7 error(s), 0 warning(s)
d'pres que j'ai compris c'est que les erreurs se trouvent dans ccDll_TestDlg, olors j'ai essaye de suprime le programme ccDll_TestDlg j'obtient 0 erreurs voici mon programme:
// ccDLL_TestDlg.cpp //
#include "stdafx.h" #include "ccDLL_Test.h" #include "ccDLL_TestDlg.h" #include "ccDLL_CoinSelector.h" #include "ccDLL_Peripheral.h" #include "ccDLL_BillValidator.h" #include "ccDLL_Payout.h"
#ifdef _DEBUG #define new DEBUG_NEW #endif
// CAboutDlg-Dialogfeld für Anwendungsbefehl "Info"
class CAboutDlg : public CDialog { public: CAboutDlg();
// Dialogfelddaten enum {IDD= IDD_ABOUTBOX };
protected: void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung
// Implementierung protected: DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP()
// CcDLL_TestDlg-Dialogfeld
ccDLL_TestDlg::ccDLL_TestDlg(CWnd* pParent /*=NULL*/) : CDialog(ccDLL_TestDlg::IDD, pParent) , m_ComPort(2) , m_CommResult(0) , m_ccTalkAddress(0) , m_ccTalkResult(0) , m_Category(_T("")) , m_Manufacturer(_T("")) , m_Product(_T("")) , m_Version(_T("")) , m_Serial(_T("")) , m_PIN(_T("123456")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
void ccDLL_TestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_ComPort); DDX_Text(pDX, IDC_EDIT2, m_CommResult); DDX_Text(pDX, IDC_EDIT3, m_ccTalkAddress); DDX_Text(pDX, IDC_EDIT4, m_ccTalkResult); DDX_Text(pDX, IDC_EDIT5, m_Category); DDX_Text(pDX, IDC_EDIT7, m_Manufacturer); DDX_Text(pDX, IDC_EDIT6, m_Product); DDX_Text(pDX, IDC_EDIT8, m_Version); DDX_Text(pDX, IDC_EDIT9, m_Serial); DDX_Control(pDX, IDC_BTNCOINSELECTOR, m_btnCoinSelector); DDX_Control(pDX, IDC_BTNPAYOUT, m_btnPayout); DDX_Control(pDX, IDC_BTNPERIPHERAL, m_btnPeripheral); DDX_Control(pDX, IDC_BTNBILLVALIDATOR, m_btnBillValidator); DDX_Control(pDX, IDC_BUTTON1, m_btnOpen); DDX_Control(pDX, IDC_BUTTON2, m_btnClose); DDX_Control(pDX, IDC_BUTTON3, m_btnTest); DDX_Control(pDX, IDC_COMBO1, m_cbxChecksum); DDX_Control(pDX, IDC_BUTTON4, m_btnSendBreak); DDX_Control(pDX, IDC_COMBO3, m_cbxAddressList); DDX_Control(pDX, IDC_COMBO3, m_cbxAddressList); DDX_Control(pDX, IDC_BUTTON5, m_btnAddressPoll); DDX_Control(pDX, IDC_COMBO4, m_cbxEncryption); DDX_Text(pDX, IDC_EDIT18, m_PIN); DDX_Text(pDX, IDC_EDIT18, m_PIN); DDX_Control(pDX, IDC_COMBO4, m_cbxEncryption); }
BEGIN_MESSAGE_MAP(ccDLL_TestDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, ccDLL_TestDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, ccDLL_TestDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, ccDLL_TestDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BTNCOINSELECTOR, ccDLL_TestDlg::OnBnClickedBtncoinselector) ON_BN_CLICKED(IDC_BTNPAYOUT, ccDLL_TestDlg::OnBnClickedBtnpayout) ON_BN_CLICKED(IDC_BTNPERIPHERAL, ccDLL_TestDlg::OnBnClickedBtnperipheral) ON_BN_CLICKED(IDC_BTNBILLVALIDATOR, ccDLL_TestDlg::OnBnClickedBtnbillvalidator) ON_BN_CLICKED(IDC_BUTTON4, ccDLL_TestDlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, ccDLL_TestDlg::OnBnClickedButton5) END_MESSAGE_MAP()
// CcDLL_TestDlg-Meldungshandler
const CCTALK_ADDRESSLIST defaddrlst = { 2, 3, 4, 5, 6, 8, 40, 80, 150 };
BOOL ccDLL_TestDlg::OnInitDialog() { CDialog::OnInitDialog();
// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }
// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt // wenn das Hauptfenster der Anwendung kein Dialogfeld ist SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden
// Initialise ccTalk classes pCcComm = new CcTalkCommunication(); pCcDev = new CcTalkDevice(pCcComm); pCcSel = new CCoinSelector(pCcComm); pCcPeri = new CPeripheral(pCcComm); pCcPot = new CPayout(pCcComm); pCcVal = new CBillValidator(pCcComm);
EnableButtons(CCCAT_UNKNOWN);
m_cbxChecksum.AddString("Simple8"); m_cbxChecksum.AddString("CRC16"); m_cbxChecksum.SetCurSel(0);
m_cbxEncryption.AddString("None"); m_cbxEncryption.AddString("MC BNV"); m_cbxEncryption.SetCurSel(0);
ShowAdresses(defaddrlst);
return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten }
void ccDLL_TestDlg::ShowAdresses(CCTALK_ADDRESSLIST addrlst) { CString lstitm;
m_cbxAddressList.ResetContent(); for (int i = 0; i < addrlst.Count; i++) { lstitm.Format("%03d", addrlst.Adresses[i]); m_cbxAddressList.AddString(lstitm); } if (addrlst.Count > 6) m_cbxAddressList.SetCurSel(6); else m_cbxAddressList.SetCurSel(0); }
void ccDLL_TestDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }
// Wenn Sie dem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie // den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das // Dokument/Ansicht-Modell verwenden, wird dies automatisch ausgeführt.
void ccDLL_TestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext zum Zeichnen
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Symbol in Clientrechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;
// Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
// Die System ruft diese Funktion auf, um den Cursor abzufragen, der angezeigt wird, während der Benutzer // das minimierte Fenster mit der Maus zieht. HCURSOR ccDLL_TestDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); }
// Try to open the com port void ccDLL_TestDlg::OnBnClickedButton1() { int comport, res;
UpdateData(1); comport = m_ComPort; res = pCcComm->OpenComm(comport); m_CommResult = res; UpdateData(0); EnableButtons(CCCAT_UNKNOWN);
} // Send Break void ccDLL_TestDlg::OnBnClickedButton4() { pCcComm->SendBreak(); } // Try to close the com port void ccDLL_TestDlg::OnBnClickedButton2() { int res;
res = pCcComm->CloseComm(); m_CommResult = res; UpdateData(0); EnableButtons(CCCAT_UNKNOWN); }
// Get core info void ccDLL_TestDlg::OnBnClickedButton3() { int res, addr; char cbxtxt[32]; CCTALK_COREINFO coreinf; CCTALK_COINS money;
UpdateData(1);
m_cbxAddressList.GetLBText(m_cbxAddressList.GetCurSel(), cbxtxt); // Read and set up comm parameters sscanf(cbxtxt, "%d", &addr); // Device address pCcDev->SetDeviceAddress(addr); if (m_cbxChecksum.GetCurSel() == 0) // Checksum type pCcDev->SetChecksumType(CSUM_SIMPLE8); else pCcDev->SetChecksumType(CSUM_CRC16); if (m_cbxEncryption.GetCurSel() == 0) // Encryption pCcDev->SetEncryption(ENCRYPT_NONE); else pCcDev->SetEncryption(ENCRYPT_MCBNV);
LPTSTR pinbff = m_PIN.GetBuffer(0); if (m_PIN.GetLength() == 6) for (int i = 0; i < 6; i++) m_pin[i] = pinbff[i] - '0'; else for (int i = 0; i < 6; i++) m_pin[i] = 0; pCcDev->InitPINCode(m_pin);
res = pCcDev->GetCoreInfo(&coreinf); m_ccTalkResult = res; if (res == CCERR_OK) { m_Category.Format("%s (%d)", coreinf.Category.Name, coreinf.Category.ID); m_Manufacturer = coreinf.Manufacturer; m_Product = coreinf.ProductCode; m_Version = coreinf.SoftwareRevision; m_Serial.Format("%010d", coreinf.Serial); if (coreinf.Category.ID == CCCAT_COINSELECTOR) { res = pCcSel->GetCoinStatus(money); } } else { m_Category = ""; m_Manufacturer = ""; m_Product = ""; m_Version = ""; m_Serial = ""; } UpdateData(0); EnableButtons(coreinf.Category.ID); }
// Enable buttons depending on device category void ccDLL_TestDlg::EnableButtons(int devcat) { m_btnCoinSelector.EnableWindow(0); m_btnPayout.EnableWindow(0); m_btnPeripheral.EnableWindow(0); m_btnBillValidator.EnableWindow(0); m_btnOpen.EnableWindow(!pCcComm->GetIsOpen()); m_btnClose.EnableWindow(pCcComm->GetIsOpen()); m_btnTest.EnableWindow(pCcComm->GetIsOpen()); m_btnSendBreak.EnableWindow(pCcComm->GetIsOpen()); m_btnAddressPoll.EnableWindow(pCcComm->GetIsOpen());
switch (devcat) { case CCCAT_COINSELECTOR: m_btnCoinSelector.EnableWindow(1); break; case CCCAT_PAYOUT: m_btnPayout.EnableWindow(1); break; case CCCAT_PERIPHERAL: m_btnPeripheral.EnableWindow(1); break; case CCCAT_BILLVALIDATOR: m_btnBillValidator.EnableWindow(1); break; } } // Show coin selector void ccDLL_TestDlg::OnBnClickedBtncoinselector() { ccDLL_CoinSelector cselDlg;
UpdateData(1); pCcSel->SetDeviceAddress(pCcDev->GetDeviceAddress()); cselDlg.m_pCcSel = pCcSel; cselDlg.DoModal(); } // Show payout void ccDLL_TestDlg::OnBnClickedBtnpayout() { ccDLL_Payout potDlg;
UpdateData(1); pCcPot->SetDeviceAddress(pCcDev->GetDeviceAddress()); potDlg.m_pCcPot = pCcPot; potDlg.DoModal(); } // Show peripheral void ccDLL_TestDlg::OnBnClickedBtnperipheral() { ccDLL_Peripheral periDlg;
UpdateData(1); pCcPeri->SetDeviceAddress(pCcDev->GetDeviceAddress()); periDlg.m_pCcPeri = pCcPeri; periDlg.DoModal(); } // Show Bill validator void ccDLL_TestDlg::OnBnClickedBtnbillvalidator() { ccDLL_BillValidator valDlg;
UpdateData(1); pCcVal->SetDeviceAddress(pCcDev->GetDeviceAddress()); pCcVal->SetChecksumType(pCcDev->GetChecksumType()); pCcVal->SetEncryption(pCcDev->GetEncryption()); pCcVal->InitPINCode(m_pin); valDlg.m_pCcVal = pCcVal; valDlg.DoModal(); }
// Address poll void ccDLL_TestDlg::OnBnClickedButton5() { CCTALK_ADDRESSLIST addrlst; CCTALK_COMMPARS commpars;
int res = CCERR_UNKNOWN;
if (m_cbxChecksum.GetCurSel() == 0) commpars.ChecksumType = CSUM_SIMPLE8; else commpars.ChecksumType = CSUM_CRC16;
res = pCcComm->AddressPoll(&addrlst, commpars);
if (res == CCERR_OK) ShowAdresses(addrlst);
m_ccTalkResult = res; UpdateData(0); }
#pragma once
#include ".\ccTalkComm.h" #include "afxwin.h"
class ccDLL_TestDlg:public CDialog
{ DECLARE_DYNAMIC(ccDLL_TestDlg) public : ccDLL_TestDlg(CWnd* pParent=NULL); enum cust_enum{}; enum {IDD=IDD_ccDLL_Test_DIALOG}; protected: virtual void DoDataExchange(CDataExchange* pDX); protected: HICON m_hIcon; virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID,LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedButton1(); afx_msg void OnBnClickedButton2(); CcTalkCommunication* pCcComm; CcTalkDevice* pCcDev; CCoinSelector* pCcSel; CPeripheral* pCcPeri; CPayout* pCcPot; CBillValidator* pCcVal;
BYTE m_pin[6];
private: void ShowAdresses(CCTALK_ADDRESSLIST addrlst);
public: void ccDLL_TestDlg::EnableButtons(int devcat);
int m_ComPort; int m_CommResult; int m_ccTalkAddress; int m_ccTalkResult; afx_msg void OnBnClickedButton3(); CString m_Category; CString m_Manufacturer; CString m_Product; CString m_Version; CString m_Serial; afx_msg void OnBnClickedButton5(); CButton m_btnCoinSelector; CButton m_btnPayout; CButton m_btnPeripheral; CButton m_btnBillValidator; CButton m_btnOpen; CButton m_btnClose; CButton m_btnTest; afx_msg void OnBnClickedBtncoinselector(); afx_msg void OnBnClickedBtnpayout(); afx_msg void OnBnClickedBtnperipheral(); afx_msg void OnBnClickedBtnbillvalidator(); CComboBox m_cbxChecksum; afx_msg void OnBnClickedButton4(); CButton m_btnSendBreak; CComboBox m_cbxAddressList; CButton m_btnAddressPoll; CString m_PIN; CComboBox m_cbxEncryption;
}; svp aider moi merci d'avance
|
|
mercredi 3 septembre 2008 à 15:06:12 |
Re : erreur de linkage

fregolo52
|
tu n'auras pas défini une classe CAboutDlg dans le fichier Monnayeur.cpp ?
|
|
Cette discussion est classée dans : pdx, idc, ddx, ccdll, testdlg
Répondre à ce message
Sujets en rapport avec ce message
erreur LNK [ par olfa7183 ]
salutj'ai un petit projet programmé sur visual studio 6.0. lors de compilation il n'y a aucune erreur mais lors d'exécution il me parait ça:----------
pb initialisation/modification de variables ds une boite de dialogue [ par neub ]
Salut,j'ai un leger ennui qui devrait etre certainement simple à resoudre (je suis debutant en vc++):je developpe un module de trajectographie. Ds mon
property page avec les activex OCX [ par stef2000 ]
je souhaite integrer une combo box dans ma property page. Je souhaite l'iniatialiser avec une liste de valeurs possible pour une propriété via OnInit
DDX_Check int to int & [ par shootrz ]
Bonjour j'essai de faire un DDX_Check et j'obtien toujour l'erreur error C2664: 'DDX_Check' : cannot convert parameter 3 from 'int' to 'int &'[CODE]
Jeu de Taquin [ par 2fear ]
Bonjour,Je dois programmer un jeu de taquin (3x3) sur Visual Studio 2005 ... et j'ai vraiment besoin d'aide !J'ai commencé par créer une boite de dial
! Aide pour bouton radio (débutant) [ par etaxi ]
Salut à tous; voilà je suis en train de m'initier aux différents controls j'ai pompé un code sur les boutons radio, ça fonctionne; mais je voudrais lu
!code OK ?rien ne s'affiche !je m'arrache les tiffs [ par etaxi ]
Je salut tout le monde tout de même. voilà, j'ai trois fichiers: un.c un.h un.rc le projet se compile sans erreurs. ce n'est pas une usine à gaz d'app
Code sans erreurs mais rien ne s'affiche! [ par etaxi ]
Salut à tous, voilà j'ai un petit projet qui se compile sans erreurs. (déjà écrit sous Borland C++ Builder) mais à l'exécution( sous DevC++ ), rien
MFC [ par youssefizem ]
salut a tous;je veux récupérer un Label sous VC++ dans les MFC biensur en utilisant la fonction GetDlgItem(IDC_STATIC1) afin de changer le caption mai
recherche un texte spécifié....!!!! [ par mejdimm ]
Salut tout le monde.!!!!!!je vous propose ici un code source : "recherche un texte spécifié" dans tous les fichiers texte de votre disque dur, l'utili
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|