Bonjour,
J'utilise C::B avec la dernier version disponible de Gcc par Mingw (4.5) pour programmer une carte d'acquisition Analogique -> Numérique de marque Advantech sous winXP.
Actuellement j'utilise la bibliothèque fournit par défaut et aucun problème ça marche.
Mais en voulant installer ce logiciel sur Win7 la bibliothèque n'a pas été évoluée et Advantech fournis à la place une nouvelle library qui fonctionne sous XP, Vista et 7.
Bien que le fonctionnement global de cette nouvelle biblio soit identique, je me retrouve confronter un ce problème :
Elle a été faite pour VC10 et une fois la transposition de mon logiciel réaliser je ne peut pas compiler suite à ce bout de code :
la variable ai est de type BDaqAi ( entête si dessous )
Code : Sélectionner tout - Visualiser dans une fenêtre à part errorCode = ai->Property.Set( CFG_ScanChannelStart,startChannel );
qui elle même appartient à BDaqModule :
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
29 class BDaqAi : public BDaqModule { public: // instant AI single channel methods ErrorCode Read(long channel, double& dataScaled); ErrorCode Read(long channel, short& dataRaw); // for the device whose raw data is in 16bits format ErrorCode Read(long channel, long& dataRaw); // for the device whose raw data is in 32bits format // instant AI multi channel methods ErrorCode Read(long chStart, long chCount, double dataScaled[]); ErrorCode Read(long chStart, long chCount, short dataRaw[], double dataScaled[]); // for the device whose raw data is in 16bits format ErrorCode Read(long chStart, long chCount, long dataRaw[], double dataScaled[]) ; // for the device whose raw data is in 32bits format // buffered AI methods ErrorCode BfdAiPrepare(long dataCount, void* * dataRaw); ErrorCode BfdAiRunOnce(bool asynchronous); ErrorCode BfdAiRun(); ErrorCode BfdAiScaleData(void* dataRaw, double dataScaled[], long dataCount, long* chOffset); ErrorCode BfdAiStop(); ErrorCode BfdAiRelease(); protected: friend class BDaqDevice; // internal used only BDaqAi(HANDLE aiHandle) : BDaqModule(aiHandle) { } virtual ~BDaqAi() { } };
Mais voilà les méthodes Property sont définis pour Borland et MSC_VER
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 class BDaqModule { public: // Methods #if defined(__BORLANDC__) || defined(_MSC_VER) __declspec(property(get = get_Handle)) HANDLE Handle; #endif HANDLE get_Handle() { return m_moduleHandle; } #if defined(__BORLANDC__) || defined(_MSC_VER) __declspec(property(get = get_Property)) BDaqProperty &Property; #endif BDaqProperty & get_Property( ) { return m_property; } #if defined(__BORLANDC__) || defined(_MSC_VER) __declspec(property(get = get_Event)) BDaqEvent &Event; #endif BDaqEvent & get_Event() { return m_event; } protected: BDaqModule(HANDLE moduleHandle) { m_moduleHandle = moduleHandle; m_property.SetParent(this); m_event.SetParent(this); } virtual ~BDaqModule() { } virtual void Release() { delete this; } protected: friend class BDaqModuleManager; HANDLE m_moduleHandle; BDaqProperty m_property; BDaqEvent m_event; };
Y-a-t-il une possibilité d'utiliser la méthode property depuis un compilo Gcc ou dois-je migrer ma solution vers VC10 express?
N'étant pas expert dans toutes ces relations inter compilateur, s'il manque des infos pour la bonne compréhension du problème dite le moi et je compléterai.
Merci à tous
Renaud
Partager