Форум программистов, компьютерный форум CyberForum.ru

Не строится решение - Синтаксическая ошибка: перед "unsigned int" требуется ";" - C++

Восстановить пароль Регистрация
 
ildar_s
 Аватар для ildar_s
12 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 39
09.08.2014, 14:25     Не строится решение - Синтаксическая ошибка: перед "unsigned int" требуется ";" #1
Уважаемые форумчане помогите построить решение. Есть в решении строящаяся библиотека (строит .dll) и в этом же решении программа похоже использующая эту библиотеку. Отдельно библиотека строится без ошибок. А когда запускаю все решение, показывает ошибки (на картинке 1, на второй картинке объявление макросов). Программа связана с компьютерным зрением, а именно использование блобов.

1.Ошибка 4 error C2144: синтаксическая ошибка: перед "unsigned int" требуется ";" c:\users\ildar\documents\visual studio 2012\projects\cvblobdll\cvblobdll\cvblobdll.h 60 1 TestDLL

2.Ошибка 5 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию c:\users\ildar\documents\visual studio 2012\projects\cvblobdll\cvblobdll\cvblobdll.h 60 1 TestDLL

3.Ошибка 6 error C2144: синтаксическая ошибка: перед "void" требуется ";" c:\users\ildar\documents\visual studio 2012\projects\cvblobdll\cvblobdll\cvblobdll.h 64 1 TestDLL

4.Ошибка 7 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию c:\users\ildar\documents\visual studio 2012\projects\cvblobdll\cvblobdll\cvblobdll.h 64 1 TestDLL

Код программы:
C++
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// TestDLL.c : test of CvBlob DLL
//
#define CVBLOBDLL_API CDECL
 
#include "opencv\cv.h"
#include "opencv2\highgui\highgui.hpp"
#include "core\core_c.h"
#include "cvblobDLL.h"
#include "cvblob.h"
 
#pragma comment(lib,"cvblobDLL.lib")
 
int main(int argc, char* argv[])
{
  IplImage *img = cvLoadImage("test.png", 1);
 
 // cvSetImageROI(img, cvRect(100, 100, 800, 500));
 
  cvSmooth(img, img, 3, 7);
 
  IplImage *grey = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
  cvCvtColor(img, grey, CV_BGR2GRAY);
  cvAdaptiveThreshold(grey, grey, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, 0, 19, 2.0); 
 
  IplImage *labelImg = cvCreateImage( (cvGetSize(grey)),32,1);
 
  CvSeq* lb;
 
 
  CvMemStorage * ms = cvCreateMemStorage();
  int res = cvBlobDLabel(grey, labelImg, ms, &lb, 400, (CVBLOBDLL_GETCONTOUR | CVBLOBDLL_GETHOLESCONT | CVBLOBDLL_GETMEANCOLOR), img);
  
    CvBlobObj*  elBlob;
    int i;
 
    for ( i = 0; i < lb->total; i++)
    {
        elBlob = (CvBlobObj*) cvGetSeqElem((CvSeq*) lb, i);
        // extract and draws blob contour
        if (elBlob->contour) {
            cvDrawContours(img, elBlob->contour, CV_RGB(255,0,0), CV_RGB(255,255,0), 1, 3);
 
 
            //CvSeq* hull = cvConvexHull2(elBlob->contour, ms, CV_CLOCKWISE, 1);
            //cvDrawContours(img, hull, CV_RGB(0,0,255), CV_RGB(0,255,255), 1, 3);
        };
        // extract and draws every blob internal hole contour
        if (elBlob->internalContours) {
            CvSeq* seqCont = elBlob->internalContours;
            while ( seqCont ) 
            {
                cvDrawContours(img, seqCont, CV_RGB(0,255,0), CV_RGB(0,0,0), 1, 1);
                seqCont = seqCont->h_next;
            }
        };
        cvCircle(img, cvPoint((int)(elBlob->centroid.x),(int)(elBlob->centroid.y)), 2, CV_RGB(0,0,255), 2); 
    };
 
    cvBlobDRelease();
    cvReleaseMemStorage(&ms);
 
    cvResetImageROI(img);
    cvSaveImage("imgout.png", img);
    return 0;
}
Код библиотеки:
C++
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
// cvblobDLL.cpp 
// A C style dynamic library (DLL) to encapsulate CvBlob functions
// Copyright (C) 2010 by Giandomenico De Sanctis
// [email]gidesay@yahoo.it[/email]
// Use CvBlob C++ library: Copyright (C) 2007 by Cristуbal Carnero Liсбn [email]grendel.ccl@gmail.com[/email]
 
#include <vector>
 
#include "stdafx.h"
#include "cvblobDLL.h"
#include "cvblob.h"
 
using namespace cvb;
 
#define MIN_HOLE_POINTS 10
 
typedef std::vector<void*> memVect;
memVect pAllocatedMem;
int   nAllocatedMem=0;
 
void* cvBlobDAlloc(int bytes) 
{
    void* p = malloc(bytes);
    if (p) {
        pAllocatedMem.push_back(p);
        nAllocatedMem++;
    };
    return p;
};
 
CVBLOBDLL_API CDECL void cvBlobDRelease() 
{
    CV_FUNCNAME( "cvBlobDRelease" );
 
    __BEGIN__;
 
 
    memVect::const_iterator costIter = pAllocatedMem.begin();
    for(; costIter != pAllocatedMem.end(); costIter++)
    {
        void* P = (void*)(*costIter);
        free(P);
    };
    
    pAllocatedMem.clear();
 
    nAllocatedMem = 0;
 
 
    __END__;
};
 
 
BOOLEAN cvBlobDContour(CvSeq** seqCont, const CvContourChainCode blobListElem, CvMemStorage * memstor)
{
    BOOLEAN res = FALSE;
 
 
    CV_FUNCNAME( "cvBlobDContour" );
 
    __BEGIN__;
 
    if (( !seqCont ) || ( !(&blobListElem) )) 
        CV_ERROR( CV_StsNullPtr, "" );
 
    *seqCont = NULL;
 
 
    { // init block with iterators
    CvContourPolygon* pPolyg = cvConvertChainCodesToPolygon(&blobListElem);
 
    if (pPolyg->size() == 0) { delete pPolyg; return res; };
 
    // simplify a bit the contour
    CvContourPolygon* pContour = cvSimplifyPolygon(pPolyg, 5.0);
    delete pPolyg;
 
    CvSeq* seqpoints = NULL;
    seqpoints = cvCreateSeq(CV_SEQ_CONTOUR, sizeof(CvSeq), sizeof(CvPoint), memstor);
 
    CvPoint*  pNewPoint = (CvPoint*) cvBlobDAlloc(sizeof(CvPoint)*pContour->size());
    if (( !pNewPoint ) )
        CV_ERROR( CV_StsNullPtr, "Not enough memory for contour points" );
    CvContourPolygon::const_iterator pcontIter = pContour->begin();
    for(; pcontIter != pContour->end(); pcontIter++)
    {
        pNewPoint->x = (*pcontIter).x;
        pNewPoint->y = (*pcontIter).y;
        void* newElem = (void*)  cvSeqPush((CvSeq*) seqpoints, (void*) pNewPoint);
        pNewPoint++;
    };
 
    *seqCont = seqpoints;
 
    delete pContour;
    }; // end block with iterators
 
 
    __END__;
 
 
    return res;
};
 
 
 
CVBLOBDLL_API CDECL unsigned int cvBlobDLabel 
     (IplImage const *img, IplImage *imgOut, CvMemStorage * memstor, CvSeq** sblobs,
     int minArea, int flags, const IplImage* colorImg)
{
    int res;
    CvBlobs lblobs;
 
    
    CV_FUNCNAME( "cvBlobDLabel" );
 
    __BEGIN__;
 
    if (( !memstor ) || ( !img ) || ( !imgOut ))
        CV_ERROR( CV_StsNullPtr, "" );
    if ( !CV_IS_STORAGE( memstor ))
        CV_ERROR( CV_StsBadArg, "1st param not a  CvMemStorage" );
    if ( !CV_IS_IMAGE( img ))
        CV_ERROR( CV_StsBadArg, "2st param not an IplImage" );
    if ( !CV_IS_IMAGE( imgOut ))
        CV_ERROR( CV_StsBadArg, "3st param not an IplImage" );
    if ( (colorImg) &&  (!CV_IS_IMAGE( colorImg )) )
        CV_ERROR( CV_StsBadArg, "colorImg param not an IplImage" );
 
    res = cvLabel(img, imgOut, lblobs);
    if (minArea<10) 
            minArea = 10;
    cvFilterByArea(lblobs, minArea, (img->width*img->height));
 
    if (lblobs.size() ==0)
    {
        sblobs = NULL;
        cvReleaseBlobs(lblobs);
        return 0;
    };
    CvSeq* seqblobs = NULL;
    seqblobs = cvCreateSeq(CV_SEQ_ELTYPE_GENERIC, sizeof(CvSeq), sizeof(CvBlobObj), memstor);
    
    CvBlobObj* pNewBlobObj = (CvBlobObj*) cvBlobDAlloc(sizeof(CvBlobObj)*lblobs.size());
   if (( !pNewBlobObj ) )
        CV_ERROR( CV_StsNullPtr, "Not enough memory for blobs" );
   for (CvBlobs::const_iterator it=lblobs.begin(); it!=lblobs.end(); ++it)
   {
       CvBlob curBlob = (CvBlob) *((*it).second);
       // cvCentralMoments(&curBlob, imgOut);
            
       memcpy(pNewBlobObj, &curBlob, sizeof(CvBlobObj));
        pNewBlobObj->angle = cvAngle(&curBlob);
        // eccentricity = ( (u20 - u02)^2 - 4 u11^2 ) / (u20 + u02)^2 );
        pNewBlobObj->eccentricity = 
            ( (pNewBlobObj->u20 - pNewBlobObj->u02)*(pNewBlobObj->u20 - pNewBlobObj->u02) - 4*pNewBlobObj->u11*pNewBlobObj->u11 )
                / ( (pNewBlobObj->u20 + pNewBlobObj->u02)*(pNewBlobObj->u20 + pNewBlobObj->u02) );
        pNewBlobObj->meanColor = cvScalarAll(0);
        pNewBlobObj->contour = NULL;
        pNewBlobObj->internalContours = NULL;
 
        if (flags & CVBLOBDLL_GETCONTOUR)
        {
            cvBlobDContour(&pNewBlobObj->contour, curBlob.contour, memstor);
        };
 
        if ((flags & CVBLOBDLL_GETHOLESCONT) && (curBlob.internalContours.size()>0))
        {
            CvSeq* precCont = NULL;
            CvSeq* curCont = NULL;
            CvContoursChainCode::const_iterator pcontIter = curBlob.internalContours.begin();
            for(; pcontIter != curBlob.internalContours.end(); pcontIter++)
            {
                // process only holes with at less MIN_HOLE_POINTS points
                if ( (*(*pcontIter)).chainCode.size()>=MIN_HOLE_POINTS) {
                    cvBlobDContour(&curCont, *(*pcontIter) , memstor);
                    if (precCont) {
                        precCont->h_next = curCont;
                    } else { 
                        pNewBlobObj->internalContours = curCont;
                    };
                    curCont->h_prev = precCont;
                    precCont = curCont;
                };
            };
        };
        if ((flags & CVBLOBDLL_GETMEANCOLOR) && (colorImg))  {
            pNewBlobObj->meanColor = cvBlobMeanColor(&curBlob, imgOut, colorImg);
        };
        
        void* newElem = (void*)  cvSeqPush((CvSeq*) seqblobs, (void*) pNewBlobObj);
 
        pNewBlobObj++;
  }
 
 
 
   *sblobs = seqblobs;
   cvReleaseBlobs(lblobs);
    
    __END__;
 
 
    return res;
};
Миниатюры
Не строится решение - Синтаксическая ошибка: перед "unsigned int" требуется ";"   Не строится решение - Синтаксическая ошибка: перед "unsigned int" требуется ";"  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2014, 14:25     Не строится решение - Синтаксическая ошибка: перед "unsigned int" требуется ";"
Посмотрите здесь:

C++ error C2143: синтаксическая ошибка: отсутствие "]" перед ";"
Синтаксическая ошибка: отсутствие ";" перед "<" C++
error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "fprot" C++
C++ error C2143: синтаксическая ошибка: отсутствие ";" перед "using"
C++ Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1"
C++ Error C2440: <function-style-cast>: невозможно преобразовать "unsigned int" в "std::bitset<_Bits>"
C++ Error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
Error C2143: синтаксическая ошибка: отсутствие ";" перед "<<" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru