2015-05-05 66 views
1

我想補充的對象IFileOperationIShellItem,但我不能以任何方式源填寫並給我回:DEVC++ - 「IFileOperation」未申報(C++)

IFileOperation - undeclared (first use in this function) 

我使用的dev- C++與連接器的參數:-luuid -lole32

我想我必須添加其他標題,但每個谷歌搜索都不成功。 你有什麼想法嗎?

#include <windows.h> 
#include <shlobj.h> 

int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) 
{ 
    HRESULT  hr; 
    IShellLink* pISL; 

    hr = CoCreateInstance(CLSID_ShellLink,   // CLSID of coclass 
          NULL,     // not used - aggregation 
          CLSCTX_INPROC_SERVER, // type of server 
          IID_IShellLink,   // IID of interface 
          (void**) &pISL);   // Pointer to our interface pointer 

    if(SUCCEEDED(hr)) 
    { 
     pISL->Release(); 
    } 
    else 
    { 
     // Couldn't create the COM object. hr holds the error code. 
    } 

    CoUninitialize(); 
} 
+0

「IFileOperation」和「IShellItem」的接口定義在* 中均爲* * [來自MS的文檔](https://msdn.microsoft.com/zh-cn/library/windows/desktop/ bb775771%28V = vs.85%29.aspx)。這個文檔是從簡單的谷歌搜索*'IShellItem'或'IFileOperation'的**第一次打擊**,並帶來懷疑「...每一次谷歌搜索都不成功」的說法,或者至少,無論你尋找什麼術語。 – WhozCraig

+0

包括#include 返回此錯誤:「Shobjidl.h:沒有這樣的文件或目錄。」所以問題依然存在,我該如何繼續? – Metanubix

+0

您是使用Windows Vista或更高版本兼容的SDK編譯的?如果沒有,您將無法找到該文件(也在同一文檔中註明)。您使用的是哪個SDK版本,以及您定位的是哪個平臺?除非DevC++至少符合Windows Vista/Server2008 SDK規範,否則它將不起作用,您可能會轉而使用傳統的SHFileOperation子系統。 (yuck) – WhozCraig

回答

0

我懷疑你需要你的程序鏈接到Shell32.lib
嘗試將你的程序設置,然後找到連接器,並添加-lShell32.lib它和保存。

無論如何,Dev-C++是一個很好的編譯器,當你開始編程時,你想編寫一些代碼,編譯並運行它。但是這個IDE非常古老而且效率不高,如果你使用的是windows,可以考慮轉移到Visual Studio。

+0

這是一個在編譯時缺少的定義;而不是鏈接時缺失的引用(儘管最終,無論如何他都需要鏈接到shell32.lib)。 – WhozCraig