11-17-2008 09:09 AM
Bonjour,
Je souhaite compiler un programme pour obtenir une DLL RT utilisable sur un boitier PXI.
Voici ma configuration : Labwindows cvi rt 6.1
voila le fichier que je n'arrive pas à compiler:
#include
<cvirte.h>
#include <windows.h>
#include <ansi_c.h>
#include <userint.h>
#include <utility.h>
#include "uut_sensordre_rt.h"
#include "global.h"
#include " init_test.h"
#include "tache_execution_test.h"
#include "tache_execution_test_util.h"
#include "tache_surveillance.h"
#include <tcpsupp.h>
#include <cvidef.h>
extern int CVIFUNC RTIsShuttingDown (void);
static int nb_thread = 20;
void CVIFUNC_C RTmain (void)
{
int err = 0;
static int
Fonction_tache_communication_ID = 0;
static int Fonction_tache_surveillance_ID
= 0;
static int
Fonction_tache_execution_test_ID = 0;
HANDLE
mainThreadhdl;
if (InitCVIRTE (0, 0, 0) == 0)
return; /* out of
memory */
/* your initialization code */
gprint( printf("Initialisation\n"));
iteration = 75;
Test_Fin = NOK;
vg_TR_exit = 0;
vg_TR_surveillance_init =
TACHE_NO_INITIALISATION;
vg_TR_communication_init =
TACHE_NO_INITIALISATION;
vg_TR_executionTest_init =
TACHE_NO_INITIALISATION;
vg_TR_Mode = MODE_INITIALISATION;
//creation d'un verrou
CmtNewLock (NULL, 0, &gMutex_etat_test);
//creation d'un verrou
CmtNewLock (NULL, 0, &gMutex_etat_mode);
//creation d'un verrou
CmtNewLock (NULL, 0, &gMutex_data_resultats);
// creation d'une memoire de passage utilise pour les
msg de commande
CmtNewTSQ (10,sizeof(t_TR_msg_cmd_data) ,
OPT_TSQ_DYNAMIC_SIZE, &vg_TR_hdl_msg_cmd_set_queue);
// creation d'une memoire de passage utilise pour les
msg de commande test
CmtNewTSQ (10,sizeof(t_TR_msg_cmd_data) ,
OPT_TSQ_DYNAMIC_SIZE, &vg_TR_hdl_cmd_test_set_queue);
// initialisation des cartes
Init_test( );
// passage priorité basse de main
mainThreadhdl = GetCurrentThread();
SetThreadPriority(mainThreadhdl,THREAD_PRIORITY_LOWEST);
//======================================
// ORGANISATION DES TACHES
//======================================
// creation d'un pool de 4 taches
CmtNewThreadPool (4, &g_h_pool);
// creation tache de communication Niveau low
err = CmtScheduleThreadPoolFunctionAdv (g_h_pool,
Fonction_tache_communication, NULL,
THREAD_PRIORITY_BELOW_NORMAL, NULL,
EVENT_TP_THREAD_FUNCTION_END,
NULL,
RUN_IN_SCHEDULED_THREAD ,
&Fonction_tache_communication_ID);
// creation tache de surveillance
Niveau Normal
err = CmtScheduleThreadPoolFunctionAdv
(g_h_pool,
Fonction_tache_surveillance, NULL,
THREAD_PRIORITY_NORMAL, NULL,
EVENT_TP_THREAD_FUNCTION_END, NULL,
RUN_IN_SCHEDULED_THREAD ,
&Fonction_tache_surveillance_ID);
// creation tache d'execution de tests Niveau HIGHEST
CmtScheduleThreadPoolFunctionAdv
(g_h_pool,
Fonction_tache_execution_test,NULL,
THREAD_PRIORITY_HIGHEST, NULL,
EVENT_TP_THREAD_FUNCTION_END, NULL,
RUN_IN_SCHEDULED_THREAD ,
&Fonction_tache_execution_test_ID);
while (!RTIsShuttingDown ())
{
//Sleep(1000);
}
vg_TR_exit = 1;
while( nb_thread != 0)
{
(CmtGetThreadPoolAttribute
(g_h_pool, ATTR_TP_NUM_ACTIVE_THREADS ,&nb_thread ));
}
/* your cleanup code */
gprint( printf("cleanup"));
err = CmtDiscardThreadPool (g_h_pool);
g_h_pool = 0;
// destruction du verrou
CmtDiscardLock (gMutex_etat_test);
CmtDiscardLock (gMutex_etat_mode);
CmtDiscardLock (gMutex_data_resultats);
// destruction de la memoire de
passage utilise pour les resultats
CmtDiscardTSQ
(vg_TR_hdl_msg_cmd_set_queue);
// destruction de la memoire de
passage utilise pour les resultats
CmtDiscardTSQ
(vg_TR_hdl_cmd_test_set_queue);
//arret cartes
Fin_Init_test( );
CloseCVIRTE ();
Et voila le resultat de la compilation:
90,7 Missing prototype (pour CmtNewThreadPool)
97,11 Missing prototype
100,35 Undeclared identifier "EVENT_TP_THREAD_FUNCTION_END"
101,35 Undeclared identifier "RUN_IN_SCHEDULED_THREAD"
106,11 Missing prototype
122,5 Missing prototype
140,10 Missing prototype
140,48 Undeclared identifier "ATTR_TP_NUM_ACTIVE_THREADS"
152,15 Missing prototype
Le probleme vient surement du fichier Utility.
Avez vous une idée?
Faut il que je recharge CVI 6.1 ?
Merci
Solved! Go to Solution.
11-20-2008 02:56 AM
Hello,
Can you send a MAX report please ? Under MAX select File-> create a report
Did you try an NI example ?
Regards
11-20-2008 06:48 AM
Bonjour,
Voila les fichiers en pieces jointes
Merci
11-20-2008 07:16 AM - edited 11-20-2008 07:16 AM
Le module RT pour CVI n'est compatible qu'avec la version 8.0.1 ce CVI.
Par ailleurs, je ne vois nul part de module RT d'installé dans le rapport de MAX que vous avez fourni. Seul le Runtime RT pour CVI est installé et ne permets pas la compilation de code.
Pour pouvoir compiler votre code, il vous faut au minimum CVI 8.0.12 et le LabWindows/CVI 8.0 Real-Time Module
Cordialement,
PS : pour les demandes en français merci de poster dans la section Française
11-25-2008 12:55 AM
Merci
En effet il a fallu recharger RT
Cordialement