2012-06-11 34 views
5

Bir olayı yakalamaya çalışıyorum ve hangi olayı görmek için GUID'ye başvurmaya çalışıyorum.Başvuru REHBERİ

DWORD WINAPI AvisionEventProc(LPVOID lpParam){ 
    //HANDLE hEvent = * (HANDLE *) lpParam; // This thread's read event 
    STINOTIFY pStiNotify; 

    if (debug){ 
     wprintf(L"Avision Event\n"); 
    } 
    while(true){ 
     WaitForSingleObject(hAvisionEvent, INFINITE); 
     wprintf(L"Event"); 
     pStiDevice->GetLastNotificationData(&pStiNotify); 
     if (pStiNotify.guidNotificationCode == GUID_STIUserDefined1){ 
      wprintf(L"User defined 1"); 
     }else if (pStiNotify.guidNotificationCode == GUID_STIUserDefined2){ 
      wprintf(L"User defined 2"); 
     }else if (pStiNotify.guidNotificationCode == GUID_STIUserDefined3){ 
      wprintf(L"User defined 3"); 
     } 

     ResetEvent(hAvisionEvent); 
    } 
    return 1; 
} 

Bu sadece iyi derler ama ben bağlarken Aşağıdaki hataları olsun: kod aşağıda

tuhaf bir şey olduğunu sti.h ben diğer sabitleri çekiyorum olarak bağlantılıdır edilir
1>sti.obj : error LNK2001: unresolved external symbol _GUID_STIUserDefined3 
1>sti.obj : error LNK2001: unresolved external symbol _GUID_STIUserDefined2 
1>sti.obj : error LNK2001: unresolved external symbol _GUID_STIUserDefined1 

o. Aşağıdaki GUID ilanından tarafından fark ettiniz:

#if defined(_WIN32) && !defined(_NO_COM) 

/* 
* Class IID's 
*/ 

// B323F8E0-2E68-11D0-90EA-00AA0060F86C 
DEFINE_GUID(CLSID_Sti, 0xB323F8E0L, 0x2E68, 0x11D0, 0x90, 0xEA, 0x00, 0xAA, 0x00, 0x60, 0xF8, 0x6C); 

/* 
* Interface IID's 
*/ 

// {641BD880-2DC8-11D0-90EA-00AA0060F86C} 
DEFINE_GUID(IID_IStillImageW, 0x641BD880L, 0x2DC8, 0x11D0, 0x90, 0xEA, 0x00, 0xAA, 0x00, 0x60, 0xF8, 0x6C); 

<snip> 

/* 
* Standard event GUIDs 
*/ 

// {740D9EE6-70F1-11d1-AD10-00A02438AD48} 
DEFINE_GUID(GUID_DeviceArrivedLaunch, 0x740d9ee6, 0x70f1, 0x11d1, 0xad, 0x10, 0x0, 0xa0, 0x24, 0x38, 0xad, 0x48); 

<snip> 

#endif 

mu hat GUIDs başvuruluyor stop (Ben win32 konsol uygulaması yazıyorum) ya da orada yapmak yanlış burada sahip daha temel bir şeydir "tanımlı ise" GUID'lerde anlayış eksikliği ile?

Yardımlarınız için şimdiden teşekkür ederiz.

Alkış,

Neil

+0

Genellikle GUID'lerin başlık dosyalarında bildirildiğini, ancak bir dış kitaplıkta tanımlandığını düşünüyorum. Sorunu çözmek için kütüphaneyi programınıza bağlamanız yeterlidir. Başka bir seçenek, o başlık dosyasını eklemeden önce 'u içermektir; Bu, DEFINE_GUID makrosunun, GUID'leri extern yerine satır içi olarak tanımlamak için değiştirir. – Luke

cevap

18

#include <initguid.h> eklenmelidir sayfanın alt kısmında. Bu yardımcı olacaktır.

+0

Bu bilgi son derece yardımcı oldu! – user23573

+1

Doğru cevap budur. –