• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 669
  • Last Modified:

how to get GUID in Visual C++ program

I'm using Visual Studio 2005 and programming to generate some XML file using C++. This XML file needs GUID, so I used following code to generate it:

GUID guid;
::CoInitialize(0);
::CoCreateGuid(&guid);

Then the compiler gave me following error:

error C2143: syntax error :: missing ';' before ':'

Any help is appreciated.
0
lbongsun
Asked:
lbongsun
  • 6
  • 3
1 Solution
 
jkrCommented:
Are you sure you got the right headers? The following compiles fine:


#include <objbase.h>
 
#pragma comment(lib,"ole32.lib")
 
void main () {
 
  GUID guid;
  ::CoInitialize(0);
  ::CoCreateGuid(&guid);
 
}

Open in new window

0
 
jkrCommented:
Or, a complete example along with formatting and output:
#include <objbase.h>
#include <stdio.h>
 
#pragma comment(lib,"ole32.lib")
 
void PrintGUID(GUID& guid) {
 
  printf("{%08lX-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}\r\n",
		guid.Data1, guid.Data2, guid.Data3,
		guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
		guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
}
 
void main () {
 
  GUID guid;
  ::CoInitialize(0);
  ::CoCreateGuid(&guid);
 
  PrintGUID(guid);
 
  CoUninitialize();
}

Open in new window

0
 
lbongsunAuthor Commented:
Thanks for the solution. But, with your code, I'm still having the same error message. Does this mean the compiler cannot find the ole32.lib?
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
jkrCommented:
Are you using the exact snippet from above? That's odd. BTW, are you using a source file with a '.c' extension? In that case, remove the '::' operators and make that
#include <objbase.h>
#include <stdio.h>
 
#pragma comment(lib,"ole32.lib")
 
void PrintGUID(GUID& guid) {
 
  printf("{%08lX-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}\r\n",
                guid.Data1, guid.Data2, guid.Data3,
                guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
                guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
}
 
void main () {
 
  GUID guid;
  CoInitialize(0);
  CoCreateGuid(&guid);
 
  PrintGUID(guid);
 
  CoUninitialize();
}

Open in new window

0
 
jkrCommented:
Just to elaborate - '.c' files are compiled as plain 'C', where '::' would be syntactially incorrect.
0
 
lbongsunAuthor Commented:
That just worked fine!

Thanks a lot
0
 
jkrCommented:
You're most welcome ;o)
0
 
jkrCommented:
BTW, as I see you are new to EE - you should close your question once your problem is resolved. See http://www.experts-exchange.com/Community_Support/help.jsp
0
 
lbongsunAuthor Commented:
Thanks!
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now