Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   C (http://www.programmingforums.org/forum60.html)
-   -   what does undefined reference mean? (http://www.programmingforums.org/showthread.php?t=15775)

Cisnotforcookie May 4th, 2008 2:32 PM

what does undefined reference mean?
 
so i have this code that i found online:

:

  1. // needed headers
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <ctype.h>
  7. #include <io.h>      // _access()
  8. #include <ocidl.h>  // LPPICTURE
  9. #include <olectl.h>  // OleLoadPicture()
  10. #include <ole2.h>    // CreateStreamOnHGlobal
  11.  
  12. // these are the needed libraries
  13. #pragma comment(lib,"uuid.lib")
  14. #pragma comment(lib,"ole32.lib")
  15. #pragma comment(lib,"oleaut32.lib")
  16.  
  17. // macro
  18. #define Show(Window)  RedrawWindow(Window,0,0,0);ShowWindow(Window,SW_SHOW);
  19.  
  20. // globals
  21. static HINSTANCE BCX_hInstance;
  22. static int    BCX_ScaleX;
  23. static int    BCX_ScaleY;
  24. static char    BCX_ClassName[80];
  25. static HWND    Form1;
  26. static HWND    Jpg1;
  27.  
  28. // prototypes
  29. HWND    BCX_Form(char*,int=0,int=0,int=250,int=150,int=0,int=0);
  30. HWND    BCX_OlePicture(char*,HWND=0,int=0,int=0,int=0,int=0,int=0,int=0,int=0,int=0);
  31. STDAPI  OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, LPVOID *);
  32.  
  33. void    FormLoad (void);
  34. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
  35.  
  36.  
  37. // standard main for Windows Graphics User Interface (GUI)
  38. int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR CmdLine,int CmdShow)
  39. {
  40.   WNDCLASS Wc;
  41.   MSG      Msg;
  42.   // *****************************
  43.   strcpy(BCX_ClassName,"JPEG_FILE1");
  44.   // ************************************
  45.   // Scale Dialog Units To Screen Units
  46.   // use of pixels has not been specified
  47.   // ************************************
  48.   RECT rc          =  {0,0,4,8};
  49.   MapDialogRect      (NULL,&rc);
  50.   BCX_ScaleX      =  rc.right/2;
  51.   BCX_ScaleY      =  rc.bottom/4;
  52.   BCX_hInstance    =  hInst;
  53.   // ******************************************************
  54.   Wc.style        =  CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
  55.   Wc.lpfnWndProc  =  WndProc;
  56.   Wc.cbClsExtra    =  0;
  57.   Wc.cbWndExtra    =  0;
  58.   Wc.hInstance    =  hInst;
  59.   Wc.hIcon        =  LoadIcon(NULL,IDI_WINLOGO)// standard icon
  60.   Wc.hCursor      =  LoadCursor(NULL,IDC_ARROW)// standard cursor
  61.   Wc.hbrBackground(HBRUSH)(COLOR_BTNFACE+1);
  62.   Wc.lpszMenuName  =  NULL;
  63.   Wc.lpszClassName =  BCX_ClassName;
  64.   RegisterClass(&Wc);
  65.  
  66.   FormLoad();
  67.   // message loop
  68.   while(GetMessage(&Msg,NULL,0,0))
  69.   {
  70.       HWND hActiveWindow = GetActiveWindow();
  71.       if (!IsWindow(hActiveWindow) || !IsDialogMessage(hActiveWindow,&Msg))
  72.       {
  73.           TranslateMessage(&Msg);
  74.           DispatchMessage(&Msg);
  75.       }
  76.   }
  77.   return Msg.wParam;
  78. }
  79.  
  80.  
  81. // create the Windows form
  82. HWND BCX_Form(char *Caption, int X, int Y, int W, int H, int Style, int Exstyle)
  83. {
  84.   HWND  A;
  85.   // assign a default style
  86.   if (!Style)
  87.   {
  88.     Style= WS_MINIMIZEBOX  |
  89.     WS_SIZEBOX      |
  90.     WS_CAPTION      |
  91.     WS_MAXIMIZEBOX  |
  92.     WS_POPUP        |
  93.     WS_SYSMENU;
  94.   }
  95.   A = CreateWindowEx(Exstyle,BCX_ClassName,Caption,
  96.     Style,
  97.     X*BCX_ScaleX,
  98.     Y*BCX_ScaleY,
  99.     (4+W)*BCX_ScaleX,
  100.     (12+H)*BCX_ScaleY,
  101.     NULL,(HMENU)NULL,BCX_hInstance,NULL);
  102.   // assign a default font
  103.   SendMessage(A,(UINT)WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),
  104.     (LPARAM)MAKELPARAM(FALSE,0));
  105.   return A;
  106. }
  107.  
  108.  
  109. // this is the meat!
  110. HWND BCX_OlePicture(char* szFile,HWND hWnd,int id,int X,int Y,int W,int H,
  111.     int Res,int Style,int Exstyle)
  112. {
  113.   HWND      A;
  114.   HBITMAP    hBitmap;
  115.   DWORD      dwFileSize;
  116.   DWORD      dwBytesRead;
  117.   HANDLE    hFile;
  118.   LPPICTURE  gpPicture;
  119.   LPVOID    lpPicData;
  120.   LPVOID    pvData;
  121.   LPSTREAM  pstm;
  122.   LPVOID    hrlp;
  123.   HGLOBAL    hGlobal;
  124.  
  125.   // assign a default style
  126.   if (!Style) Style=WS_CHILD|WS_VISIBLE|WS_TABSTOP|SS_BITMAP;
  127.   A=CreateWindowEx(Exstyle,"static",NULL,Style,X*BCX_ScaleX,Y*BCX_ScaleY,0,0,hWnd,(HMENU)(HMENU)id,BCX_hInstance,NULL);
  128.   // in case image is resource, fancier than needs to be
  129.   if (Res)
  130.   {
  131.     hrlp=FindResource(BCX_hInstance,MAKEINTRESOURCE(Res),RT_RCDATA);
  132.     if (hrlp!=0)
  133.     {
  134.       dwFileSize=SizeofResource(BCX_hInstance,hrlp);
  135.       hGlobal=LoadResource(BCX_hInstance,hrlp);
  136.       if (hGlobal!=0)
  137.       {
  138.           lpPicData=LockResource(hGlobal);
  139.           pvData=NULL;
  140.           hGlobal=GlobalAlloc(GMEM_MOVEABLE,dwFileSize);
  141.           pvData=GlobalLock(hGlobal);
  142.           CopyMemory(pvData,lpPicData,dwFileSize);
  143.           GlobalUnlock(hGlobal);
  144.       }
  145.   }
  146.   else
  147.     return NULL;
  148.   }
  149.   else
  150.   {
  151.     hFile=CreateFile(szFile,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
  152.     dwFileSize=GetFileSize(hFile,NULL);
  153.     if(dwFileSize==-1)
  154.     return NULL;
  155.     pvData=NULL;
  156.     hGlobal=GlobalAlloc(GMEM_MOVEABLE,dwFileSize);
  157.     pvData=GlobalLock(hGlobal);
  158.     ReadFile(hFile,pvData,dwFileSize,&dwBytesRead,NULL);
  159.     GlobalUnlock(hGlobal);
  160.     CloseHandle(hFile);
  161.   }
  162.   CreateStreamOnHGlobal(hGlobal,TRUE,&pstm);
  163.   OleLoadPicture(pstm,0,FALSE,&IID_IPicture,(LPVOID*)&gpPicture);
  164.   pstm->lpVtbl->Release(pstm);
  165.   gpPicture->lpVtbl->get_Handle(gpPicture,(OLE_HANDLE*)&hBitmap);
  166.   if (W || H)
  167.     hBitmap = CopyImage(hBitmap,IMAGE_BITMAP,W*BCX_ScaleX,H*BCX_ScaleY,LR_COPYRETURNORG);
  168.   SendMessage(A,(UINT)STM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hBitmap);
  169.   if (W || H)
  170.     SetWindowPos(A,HWND_TOP,X*BCX_ScaleX,Y*BCX_ScaleY,W*BCX_ScaleX,H*BCX_ScaleY,SWP_DRAWFRAME);
  171.   return A;
  172. }
  173.  
  174.  
  175. // details like title, corner coordinates,width,height,filename to load
  176. void FormLoad (void)
  177. {
  178.   char filename[80];
  179.  
  180.         Form1=BCX_Form("Display a JPEG from a file ... ",0,0,260,145);
  181.  
  182.   // change filename to whatever image file you have!!!!!!!!!!!!!!!!!!!!!!!
  183.   strcpy(filename,"Audi.jpg");
  184.   if ( _access(filename,0) != 0)
  185.     ExitProcess(0);
  186.  
  187.   //  width, height = 0,0  adjusts automatically to image
  188.   Jpg1=BCX_OlePicture(filename,Form1,115,1,1,0,0);
  189.   Show(Form1);
  190. }
  191.  
  192.  
  193. // message handler
  194. LRESULT CALLBACK WndProc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
  195. {
  196.   // cleanup and exit program
  197.         if (Msg == WM_DESTROY)
  198.   {
  199.     UnregisterClass(BCX_ClassName,BCX_hInstance);
  200.     PostQuitMessage(0);
  201.   }
  202.   return DefWindowProc(hWnd,Msg,wParam,lParam);
  203. }
  204.  
  205. and when i try to compile it it says that there is an undefined reference on the line (possibly 163) where it says IID_IPicture. how can i fix so i can see how this program works?


Benoit May 4th, 2008 4:18 PM

Re: what does undefined reference mean?
 
The compiler is telling you it doesn't know what IID_IPicture is, it wasn't declared anywhere in the above code. You can fix this by finding out what kind of data IID_IPicture is in your code, (a quick look up of the oleLoadPicture() function says its of type REFIID) and doing a variable declaration and whatever else is required for that piece of data.


All times are GMT -5. The time now is 4:22 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC